From 2fc809d21cb4de953c571996a2bd17b66bc96832 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Aug 2024 19:40:17 +0000 Subject: [PATCH] deploy: 06715a0f655a858a38eab083b6063c20b7ff0286 --- .nojekyll | 0 .../figure-html/cell-39-output-2.png | Bin 0 -> 12401 bytes .../figure-html/cell-16-output-1.png | Bin 0 -> 15813 bytes .../figure-html/cell-34-output-1.png | Bin 0 -> 164790 bytes .../figure-html/cell-5-output-1.png | Bin 0 -> 70498 bytes .../figure-html/cell-6-output-1.png | Bin 0 -> 120695 bytes .../figure-html/cell-7-output-1.png | Bin 0 -> 121040 bytes arc.html | 965 ++++++++ architectures.html | 898 +++++++ environment_processing.html | 846 +++++++ environments.html | 1104 +++++++++ errors.html | 1071 +++++++++ examples.html | 959 ++++++++ functions.html | 1505 ++++++++++++ helpers.html | 982 ++++++++ hierarchy.html | 1598 +++++++++++++ index.html | 838 +++++++ microgrid.html | 786 +++++++ network.html | 738 ++++++ nodes.html | 1032 ++++++++ plotting.html | 824 +++++++ putils.html | 1251 ++++++++++ robots.txt | 1 + search.json | 732 ++++++ site_libs/bootstrap/bootstrap-icons.css | 2078 +++++++++++++++++ site_libs/bootstrap/bootstrap-icons.woff | Bin 0 -> 176200 bytes site_libs/bootstrap/bootstrap.min.css | 12 + site_libs/bootstrap/bootstrap.min.js | 7 + site_libs/clipboard/clipboard.min.js | 7 + site_libs/quarto-html/anchor.min.js | 9 + site_libs/quarto-html/popper.min.js | 6 + .../quarto-syntax-highlighting.css | 205 ++ site_libs/quarto-html/quarto.js | 908 +++++++ site_libs/quarto-html/tippy.css | 1 + site_libs/quarto-html/tippy.umd.min.js | 2 + site_libs/quarto-nav/headroom.min.js | 7 + site_libs/quarto-nav/quarto-nav.js | 325 +++ site_libs/quarto-search/autocomplete.umd.js | 3 + site_libs/quarto-search/fuse.min.js | 9 + site_libs/quarto-search/quarto-search.js | 1290 ++++++++++ sitemap.xml | 79 + structure.html | 779 ++++++ styles.css | 37 + unittests_run_hierarchies.html | 807 +++++++ webots.html | 708 ++++++ yaw_module.html | 899 +++++++ 46 files changed, 24308 insertions(+) create mode 100644 .nojekyll create mode 100644 02_functions_files/figure-html/cell-39-output-2.png create mode 100644 03_nodes_files/figure-html/cell-16-output-1.png create mode 100644 04_hierarchy_files/figure-html/cell-34-output-1.png create mode 100644 09_plotting_files/figure-html/cell-5-output-1.png create mode 100644 09_plotting_files/figure-html/cell-6-output-1.png create mode 100644 09_plotting_files/figure-html/cell-7-output-1.png create mode 100644 arc.html create mode 100644 architectures.html create mode 100644 environment_processing.html create mode 100644 environments.html create mode 100644 errors.html create mode 100644 examples.html create mode 100644 functions.html create mode 100644 helpers.html create mode 100644 hierarchy.html create mode 100644 index.html create mode 100644 microgrid.html create mode 100644 network.html create mode 100644 nodes.html create mode 100644 plotting.html create mode 100644 putils.html create mode 100644 robots.txt create mode 100644 search.json create mode 100644 site_libs/bootstrap/bootstrap-icons.css create mode 100644 site_libs/bootstrap/bootstrap-icons.woff create mode 100644 site_libs/bootstrap/bootstrap.min.css create mode 100644 site_libs/bootstrap/bootstrap.min.js create mode 100644 site_libs/clipboard/clipboard.min.js create mode 100644 site_libs/quarto-html/anchor.min.js create mode 100644 site_libs/quarto-html/popper.min.js create mode 100644 site_libs/quarto-html/quarto-syntax-highlighting.css create mode 100644 site_libs/quarto-html/quarto.js create mode 100644 site_libs/quarto-html/tippy.css create mode 100644 site_libs/quarto-html/tippy.umd.min.js create mode 100644 site_libs/quarto-nav/headroom.min.js create mode 100644 site_libs/quarto-nav/quarto-nav.js create mode 100644 site_libs/quarto-search/autocomplete.umd.js create mode 100644 site_libs/quarto-search/fuse.min.js create mode 100644 site_libs/quarto-search/quarto-search.js create mode 100644 sitemap.xml create mode 100644 structure.html create mode 100644 styles.css create mode 100644 unittests_run_hierarchies.html create mode 100644 webots.html create mode 100644 yaw_module.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/02_functions_files/figure-html/cell-39-output-2.png b/02_functions_files/figure-html/cell-39-output-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b32195430cae952c36b786ab4e82ae38fa7db614 GIT binary patch literal 12401 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

24p!t4J{ zZswt{pthjM%rgl?gKF)+9#p5z=76agMCnQY>gSL98ArcMoFjuGdF=GS#_kST0UHH=A4 zYi1S}ut-XKJ%2t2d=a#TDBkh5X(OTw9@D`zZBP!gHzLcFa+~o@9_H=Jx8=N6JInrb z^%c7Bf+JmkLcoOi7#b17{ESXPY%=>_>Cti%lQ~;0J3G5->wX!6TCU_y>V&2p=BD8~ z0zx{YZlk%U+xa6~xA)?e^SoU4+3GTc&6gVXx-0TJLux< zEY;w5(bwSbPsUqz60D+XC>LzWkTlo#S+-ci2v4`a{3XHCU8#q$<3<}%b@y3G#r)2x zP~sVYrDvymmd&lL;AW#!RhA*jj%7H1q$d=C`IHnlKT|wXQq%*JF|D*7JYDdap>Te| zUW|Xp1c^)RY$}8T$549iGNuMGJm^ptygjQul7_pMhfdiJ2 z8H7iyBp&0R;5voxPgYBx_vd`!Aw@$U4x`FJyj}{{YKI*EnLz>Nv0B%g=;-L0b#6BJ zRJW1s?QNS-`3KE!c^_5mb}5jr=u+q=4Dg0@=iNiuC-x5Z-=H(-BbBr72?A&}yRkxv z1IQ}<=={->CH*CycBdY0xMvfSMqrAFh};$wT(YY9r3@@I^wa^AypK_oA`cG_)ooKm z#B&=Tge~&LI#Xt5uPe`=tc+&NHWrm!9KL=eY3kQbm*m5* zcB&)=2$s;>p)z86Mut|U#eE8E>pqZPXQ#%gk3MXnT`kNtNFbKM5kh-QZW5~SG`i9s zgXJ>_lTX09HdbwO4KQk@aRbmOID~{(Nb)#55$Ba2`lu8E+}CUx3h&cwZR4?GGxl%F z-c1na>JX-+rH#x{e2vP{56g@KKYqO9eXtq`SvUv!e@Iq3QmeD8YZIIlMl##{L4E1?goI#hqU*CD34ZZ8se^dcy9gdNAQS#_`pST&k-Nk zs{|h7)I>``TtY$xSWlE8G18CnBg<3l7(dbC19=6@rq1Mz+ez*t4@kgAjIu)lnGP@` zC?o{y3eoi_@fSz4`zyUE^}Los6EnD&=mOS#NC+PJ%h#`ocuZADom#iSlT!u38J&3}8ZUECm29AywcG|LZ5$%|^luaMbZ1tfvzp zEDnnAU#l^Me=!mc3Tpk>IDd~9iNbb9tHcNu>(0^U;f!MZa3uq4Jo&VUfI)%|HfI_nQR2^n?a!CoBEmEq4JBd6 z_ncU@-b~d{zRYysNbgR+lf8;LwmyN5pnxIF6#!3!0Zw-9ho7$IqK+su!(aR^MCKP3 zn8@&$5|yjyW3(BGv*4(Gaa~bQT_Qy`(6|v|^wX|-oXV?jiesmft@m7?LsPRpQhF6= z?eo8X8e9_p4rTrr7$5~|xGj``HY+D*>{qGk@{=b|V9McTRu&^%FzwM%CF88)kTJ?I zQ@-$67AM;%el-u1nS%K$KBpMYbV;3bBl)UhBqs?uc?c-zrr@UCIX;HfA4Zj*>*C&0 zFf5QE;{Fp9VAli>po*VuPYFXuo&!WW5VT%M%e$V z{xT@9CTYHSyiZD@Z!v!>Kn*#Pz3Yw7D4Lv`epj1Ng1McCGZbwVcih>7`uXL#Fvx?+ zIp65SyoezX7yhZMsx|`+|M6)z&E?`)rKJk^kWsE;B_$;(Fh|^hs#t9|N(iQJ;R#1+ z@(jA@L9>Fni*DL~E&tkPx|MJlS63vF3i8SKHS%_D)tfl9AJyurQO=)uWNZo?M% zBmre~fD&Z9-IHFlHPgT#?tRd{Q)7V?Fka;=!#EE%L~rkuL_7a}>ngH^L}BhIUa=8} zqJc8cr=(B=6aU`%aU{j9R{;UYgULK*08-Y#?816o0og;h)KG9*q}M!i!FkopDEiwg z_WNXrK?5!tCL^&wci)nmR!bpXouRut%b>!hdLAB-T6idw25da2OkuzqG&VJ{7_0dJ z3a9`xb;#hoJ9ngYb;(e7G1oLmG_{M{NYSqF?C*}Nfx?OpS^!?G+NW_!?kr7RA0ILG zbRjg5%8b5wk$`D>bs+ER6?`fL&V2nRgZO#YXFIsZKR!CO?VPpQUAD@=>+R_6s&6|5 z_B_bYQvICVx}Qo}(I`VWgC-Vi?^61;_uY?rYb~Wp$F`(K`7qfUHnt*|87Baa-m+iNW<3v&!BME`{R z&tuO6$h22+4>XO+g*s^x5}n_oeNWnnTb8k*eQO5p zm5Cy<%J?Drte}PEKb0rU+Y)|Jp*6NYNTdjmPwn-$4gnVQ*SXt;bbbRHHOwx+2ul!% z`0W=GY_4*_W=)|#paOs>fO6VY8B4NqU;@-@PHN@_Pi43e$uGI5>;)!-N8U%oF5I&^ zZ{?VOpvEbn`GubE=fngJP;M*Jc zW=R5)kn0W4F?7t$6L_>S6VY_9G&?%#Ep4-L<0UI0J zL=Q8sR%*EC?w_6IHri&TCyarZ-ss}cCFYb!8ze{ks?KPcdQDa9d%71Q6q5t}^z!Nj z00tH60EM!!vNE0@OmI$;l#nrfMq%x4sn8-qoctXdmpj`?hFDe~teNod#||__3g8iA z!N9;6=Ro`&tg<^mWw1y8Pqogd* zeFqs#F6asYv$(kU!0>P$Tw%ZDzjN7l@80PGL_n7ULR|nR(ZF_}qCNSflJfd>b(FS= zjU7g3Jj+KN86BO6nl~{hgX=h4?PpP3>rEBpQgdj6Fd1S~W;|4}Cd+ipR za1pGe5di6=H)E>a!gN_b^j(D@&R_<-BIA$&pPAkn)d_SFhSk<_MuLHWw)KQAl9Q?U z`1u!lyZq00vHucS&cV?_T~+0$PizS4I`<9^a-nwHh}uPkLW{2sBV0GLHItW36XOjd zQA}Qcf5#r<>hdz1XJUmIC^ZTyZ@HPExT8w}eU%6FUO%*0HjtexY;5i$g;0{K9j8U` zu3ps{|CCYqAt7-Kyx z5aA%R|N5k`1Qrxw<+S^MKt8gtw^s#{%0jTpaOdyy0vI8wh5 zHmtFY8F>83-k@#)_d|^m7dJO5St_C|F$n6~fK$)8sqxMl?vw)Vl(5K-OWOoCooc33`9uG_T3)X)bI+ra}ReH6ggpv1oB8U3{_QUWS}oWjTQh2PC#%8 zAko89kL};zRqo!syEr>5g({{8`9A|Ou*uX#-5uoD)9^}0Ua|`drvQOj_~Ljw_rnJj zne14g8&n{B>DctOFB)@K#L6nvkarFlih1oYHdVjnHBpz7gX+P`#l;1FrQ8V-Vat(` zLzu@o7&Y|sC3a`656zQV0j_Cg+`FH(?E0G=AnYUm1s-|QYL8^8h$0M3sH zUxkTI>c^&wxr5t(YRHQVYoIYxOf`>?Vq}C?8CunAHz1JVKXDOY>;IWc`x45_$!S8e z>;Rt{NRFr*XUcOjfgL&7Z-seM4pvsVTa%(Li#Xso(gFOk2BWA62?=uDse&q=*BW7H zO|eFgdiVj^fng-vOCJE4Q?w_Xx`k43A6DJoDQ^0vanZB0v#OH{Tsn4I(C=R|wm+jI zpyp%k##;9OccF-Kl!5DD@9%JC zU^)#4L8T0}+L)-Q#k9lxgwk}kvEIT@@3Te>fvD_Wm8R#wQ&gHtD%7Owm{?uc)e$*OxepzNYG&-0kRQD=Ehi=Y_5Q@U=EDK_V+ho zv`Y19{-?jPz@^p?gd0FF-y!fqLQVvCE)0G7xh-{)dpK(i0CL4aw#GinP8xLZgZ3r^ z)T3^hkuc0C8i#Jc^eS=NGge|8YZ%wUb7HBQz_YZw1%ehB7=^pLaXmec-Ii7X-&j~! z$U!?_01_3~w~UucoQc|*623~@6ocR!grM-*f^0tolU3l5gcGI#jafcOG9TR2aB*>= zF=9lQf;6If&#eS{A2der2iDs!EjoHXs3FJ79+6>=>jNgD2oj%#si_nsdMIc%01%Xk z*qg}kxhvXb;0HTL3|U!OV?jeic_X1E;Wy@m(a}&sdS%2Kv_!nuO&QmqROEtG5411| zlrQKuXi@$YUCuo4ml;-=q9t-0yg@W!l+60~x94QU#92o^ON!b>32O-H`{}>L=u26>VS=fr3FR5y{|78?m2Jg6W%L`YSNt# znKU^fFt02CURO@ABcNqLiRpu6EjWU`3RpomUzNJDqN3e-Yz(G6%C43O+GQ4jY2gItbKXS)jq1pV3j%&gNnDG6JgufPu?#`u8)aPemaqy0(53|BJk%nS^iuCF@)^sGtX{{cwsxhWCn`lPh zAmGwz5O!ZDgLJaDvtv3F{YoiMyUu-s;&5|3-p$Rey|FO>)KPV?la(v%&#kN|Lg9Ij z@gQZVm<*>%Kk|0aoB&45pAMR8WZn`alwd6Ab>hjO!Aj zdzi!E;KYLeSFcc0x-7NiC8Ll~G8kRe&d$!jiE^jLN#pl_xxp_fJzW(pgb_eqo#&s& zb)z>(an;g=;*dTN>BeujNKSu$k%US@z~kAI-69Wv{kj13>b-r^1UPzdVzLt#`T;3I z?uZA`mQ|O>621^Z%hD1W^$1Z*GtJ`lm#ETXKoDB z$EhH({%o!5`3ZQweQGM*$jC@ncYH{|Mh>ha%9sr+uj`!#+qjr#7zy?@5h$iLaGfY*v$m!M z6U1v!Xt{~4hC;C@r~wnb{7Ff{L8Mj__xjbVc_IoZxTEcN`I!@y*E0Ptv*D<~!MAw& zRN>#>nSZO$PArV#5)lpxP5DwR5-lYq9H^mMYXf;};9H?CbKRYnhq9Xo!}tR*|Eya%{cRb( zp$mj9r(SVF=S|XE?Am7??pqUya2qIBd{|i6#IpJuMR1iv5{g9nK=0)HW}T$OdQQLv zltH4sCuBuoiItUB!$>&%{h-*u(;s9o1Hf1(4?ZJP!MP{}2zZR^*RNZcnZ?b?G7`sv z-8i&-d~B>Qk?Wzr+g_k$X~3Y0_Mcnqg0LBd9-sxknUa=KW1MuTD8G`u%W`Q9uQ8lJDih80)fd*)m8(`xG zYPN$sqa0?}ZJ@U5!ttojY=M{^SiA)_6llKtz@4$iDak=4Lb*Lf;PDc6l9z)pouP(Q z8?xlx2lOG}ckYEQ1>w{0os~WT1T78%@X*@g1(4EgP}A3;N64>vfa+r5t>1uJOfTW1 z&vH8O2{r~Q^fkbUlwSgr4Pe?S3!bzP2UO}aIz=Ej-~eYDX>mcjse321+EAkUKma7$<3XW(CUh zxhC@L*|Q-q=b}qNhUppJ`mSdNpMfe5iyiS3J<9K(Ot9PC*MNCk=QE$^oz}fK;OaBczJBbIvRe!o)?-JMpw-N7PLLo!$q*)baD@ zOGFdMQETXPXufB4sX+r(1eyEvjBpE9tO(8?3i<(!KJ4MammA&qa&?q`0u~A!_wY6V zmPrsAA!pNidO9=c60nM|Xix*^Uky+DDAxbTjFtrx5re?(y2wX+*n)fV21FR(?cPfJ zyrEf0tM?ZKQ)+KigolS`!I{#AmBmF2^z~!I!m!1CPBbSC%##K5O|!G6==6y@Lb)#% zUQ42?CU6)v85wTS0|4(5iRxyNLWt>VxLmiJi6vhsvQqp{zo~Ui*Ii zaXbq1K&#xH&d~r#uf`)D3tegFo%I{mt%C;0+=0mIsqwK7W}Z)_&Ky- zpCJXvL(UuQTs4`%=LQUA{LL%Q`*2+zC|n2&czDYLH$ZpjlD3TTFQ65ct`)Cfd~^70 zb*h#hjt3+$&oa>>;*Rag-(Q{uLDfag@2LJQyeq07unY6$V=A2ohuO88vn!jddOk{<1 zc_k$q&?S`(A3zI`0Z0@|s4QJu9I%(5=W%pBm7gG^rB#7=VUAg_hPKS$UFIV74YlcN z68j$@woq~8a(ix2i+nEdDis!}kOD6|8YLZ6+T7n4G+GBOSrLSlsGuDyQQb~_N2 zR;j|SY;f4GA+{qW)EOXW8z+8-xJtX{G!V-q+dejyjKqRK1`SM5rX-7`O08?sXxmm2 z3|u{F!2_&{I>#SBew^sh{!~q^Pkcf1dFJO&=E*s!i;IgQcvgxoJg^8rTWY9F;dQ99 z7W;J;%$%IBM#_x4W}J(__6@f68xNBTKx`<6fj7XCPbZyJ-#s@Lkk$#5S5?JFeKN>% zxCqp+LAa#Vy`E^jl$|Sd8*eMvw zvH}G5_|a7*@oN`gwh&BciYnr-fJfFW0?dR*2rY(HI}YUHLfa<#5IY<{o*cDFXZuq1ysP(&ao2q{kpkVYK)6$Nl;I(RuEt5x>aW zVu%gYp#z0{@hmc82;|N}c=88|DTCrS(Gw%%B5Nwmnr7DoEEFK_I0u-%4aQstVFfJ< zvdL1>jPn11-GXaL*Wd7kIEKMcLDckA^RNV#Sr*mj=&f z$HYV`$e?*!o9(v%`obSg$80eDmwpMU@ge4y6C)nO|>KE9)=DG2F&g=DP-mFR?Ued=5jLaCqCW}6JldI0624Yc6M@74ufy7TK$ZC8)qTX`p`&c z(c9u9`+zIpI_3c>#(PS+rT?nQP+OZ;`RIp4*p{7WZ^%IW1ys*P0TFB8&BJAJaUTRM zIXG=&PLFnpcl?ps)ryLRbQ-27e()4w+)GQQl5O65m4G`ob9ADxY?A9ZcT*!^H?Xv~n8zHLE*)f-;o{~Vf-oA=5;d*}U6ONADWG;MRab3h ztQ+8AmEpOvhBk@^poI8+OCtaatz80r1+hRGp_%KuFti@X?5k7_jTb@@BxXW#+MZ_` zOd(Lwu0(m!w&kBot(si5AYb6&;X#c}VlhCwf+uw@_~>}1mnhAMCtmFz8*en-IZxmd z2qX~Hn-ok4vXLOW|7wizRzt9S-ezoP#hZNS^n$PW>rY&ZzhD|!1I6e-b z!`=0^x}D4T0PbZ28;OVC(x(;9sEr6_#Qx>7z1Ip7tu;ur#-vLE?sjOpcnApG-D%o| z4uWT!6{w41uOia_!T-zDmCqfwvlGD)HzSqEsaPYMa}>=VIn1g*@tR)V-s|vS@r9Xo zdn?I4VnnW1%a*l%D8kJh&*mbxgvyj)ITRBhlo1Ae(U$}^22q;9&u{PYd5AeBeIO{2 ziX)Gg5V}ageN}eW_;6mYvjc z#Aug5>ydo2$w%}bH%S)GKx#~cs#P1EP(5J^@@ zI^4O4QiGI^m`EgzvbFf^I*M|>^WR1T^2*&a+do5qaE zp^&_tW=VYApg0nZ(wT8PT1~__;}ZvV?B2c3(Xn4?E~Q@uwL9;2ef>7XE{I&=Bi3NM9_Ok7*s?ACD3wKILR zB*P($WFyG3e>v!nkw9;7-rLixdo-YdN_#L$biSx*^3aC*6wD@4C$tgF3BC_lV^Cjn zZUM{|H}vyEJ=0JOlGzVpYW~R|;dnnze^x#$E*4i*EIOe4El@g(?V=5oF|?ZKfHEPJ z{W@gYqQHguA_9I=Pjndw3^`RbS9~J8e|*Rfz2PE<3bf?t$EGnIT)MS-(P?UyWzoY!!0?T4Q)jAJ}@dpdu3m-@T-*()VXZ2bpC+vB^XIko4nRO#icn z2JyOSSP4d;FhPBycM<}dgn`D+PF0(WR>S(J=p@&z(-ZG*ExGbseNRx??RAqcza#(Z zd;*kuRV77@ z@;;0ttbd}5;sMwr4)CA=SEKUIM1p}Bc>{-0m(z$KvH^{@PTn+}#LUK)g`_&J_?b`c z;0==V(7iQlzE(U9T?+Zkzcw6iYH)%I`AXMrfK24#Q!y}+XA z!!!jR1QKm4837jlO*u^T4?(rbo|x=!TtUXG3UWXO@GP$8UfPI*oxaWQPb>mB-lEW! zldhFN>d*B*Wq{2FC#Y@b5prj|eF`vk}M)6Id`|nlWK{@Wk$_ zVfIM?cDP9tbSYeo#|MUo4N1h_>GJ;eDpju#9OefVI};~hfcom^2d@8uFd%@eR`t?t zNTr@`8a>|tejy1?os7Ivmu`0zOGrqxp~zyQTom5ArSbF!_*zKrI|#@Qa%Gu)AD_J5 z4LS{)gzLDS4WBHbNb{-mU`ccUj7&zDz!YD4g-<+wtb(ed^T#>FLJ$p*Dhq0iwMeUo zHz>Mq-#&C|NDyw-fi!}`lU8;$@{y!UV==>(!wg0f^BgnR2bmQzxEShNx8@rqDbNR! zyN?T;aBGJpIszXbAB=S_GR2;{EDRVNu+YxY)4%rUO+O!A-Z!=a&LyFbCgD9xYJ8xj zUuQQ?^Tu7LWA!E9Bw<}3Oy!+&4_xGCka#3g}WG?Cws0~T}v}fGP9|v8&0zgxO zXW)bT_eCjhAG+Xd+Mo8KZ#_#k~Xef`(A+^qyS6 zXRWxSGkxMOfO+q{w!vaHPfhm$tEP|f=X|*h5Yyjn_9nAk{5k^Nu`n^2%zl0L%Ik<7 z{B|eZudj6a1x;x3fgy~Kwl&UG;M-#Px)akme5Ml<7I_yD8gVpDkkL?^lllI|RjLY~ zPHlN(gzuNMca-KJ2G)VH9SV@Kl?FGxU2*D$E#|$hh#}^f;nQlOuP0BZRR5kM%z-6I z_bVMv67jYWRMFg&WO;k-$|{{}UC1A9wIR%h4j(oIx&=oQP4qyQztdm;4-k)5AP&eN zs$Nq3lCvr9n3}89XQ=8X?WJ(fG&Af&cPF5G`~{4jGM_y&$ev8;7^?KknmICJE0Lu=pUD=y8=&##Z6-d`%n zA&;?rcdQe>`_m2c2niV?Fp3~YbyWpaeHhz0`+DHX^Ej_brq zcELHziUU$UIhtd zN>5e5z52~*TTpT;0V^dDj56@$iypweR~Bol+-gZ|fWDQ$RhZOYne&4Sve)VWm6)~2 zQ|Khgn9d(b_ncYnO( zvtvqr6$(L9as@l+_9r#JOK_A@6`f4J#kp4RkTqCIgf9hf(etiAjwMF_Ktl6SN1~)7 z{S9nhuYZ@QH(%!FMLU}^o#B7ywp;tm<$*E9*r0j6)@v*Khq~i=c@}SVBVszQ^AxE+(U~2G770fsrZp)h9(nq6Fpqe=goyD(%|M0D&Htmpd-b z&vw0z+zZHu9zlhMvkyHY2?QlYS-hBASi(C6g+}D~xF<+JLKvL5c0H6Lr)tdD(6AQ0 zci-S(DDo~1py97>#@~k_xIGBJ6biK#AGZ+mwN)Dat90q}&71D6 z=U|dQ{8kbcCt+3<^8UZ-!!&;o^)^sTS2I zB#bg@Ihx)tg|_*sRBdQHZV9X&mp$I?Adn3R?&CB2b288fUBrmf5p+1|o$>Y)inuc2 z4186fAu$k(58OsVeSPTBy|>${H5oaUI2mK;aAsnF8FYgn-S#GaS5B36q4I0y|BnREucAC(w7PU6S_ z0TC^y=)~wY-+&7G%UJ>j+4Sjw@ndx-v;)QD3q5GBTeFHPNXmSgn~1Ftu*|}Am)L$4 z;!$GuBe5&+Cx}u|r-^PD5U%V=iq85rJ->M6f-VaaLtxDDEG5Xy~W@2Lt!K^vZ zmS#I1896|JY8ilrAD+8C@drEyMB58^21MY8bKQ50DeJ&EAJ21*pr5~goSbKx2)&}h zq~asTOi#(;_$H8U(k>-`YM239au`0L(3@-&0R1sqNSTG`&M#ivmCS?TS_q*{ma5hs zUxk1ih^Uv{{TUo2as_~pu7yqm)>}285)jx30#NCnvWH^+8_e*{xHUX|TKnYkn+ zR8S1K?E8Cnzs%?4B+kf~=B-lmW&_wkNaA{zgzq%3?m}ftxVC8dw?h?8zHp)~!+(Ve zr2$e5XcvC7eOk{I;W;&8r3547k4NAR18A%o_kwu&P&7Szxy7Cw40#-@CPGo|Id_BO zh6(>W<*&7m&wTa$t@iB2`R#`R$JQay+&}ewFW8h0iys69-dRV7cO29>vM#Gr;<6|W zCCDo2{QEOogp0n&gjmWv1&%F`7>2orX~LSd`r%9n$HbT!)IM16MWUy&$7n&)G$W*> zDEGK-$hT>IPOpGX2A4%n%O?r?ec#e7rN|ySx}J`L0YNb8vUJ>B!FN3eAA8c^?&^7Y zd4&yu1IL6Iw*Al{vE{2&D8#y`^u#hgKE7}0(!s}0i%a%`19-Fp%3%>c%Pffm!;MHw zGW$!|V3<;mG;3kao3al{gBhhuJrG$=At3++)}V&df!ODz98VjFR{zG9Q!L2r<3E2A zdvORUIG}UE{NvCWGd_qWqZ%H24YJ_br?_=3E-tDBxU+vSJP@ihd!dz|Phk}$$W7|B zW&4fz93P{DS8ahZVSHuz=<4owz6vBi-iV5b zs6l&1LI}okw5XOt5JEtzN?AXV%dTq{(vuo&u=LSDs>rZEgd?2I^M{7Z!x42p7G$X z7QpqZ8*CymL~}$3h`Am6Up}Jj9XMy#p@!oS5C{j~;xp8flL?pZ%jdPHGYn&r|=qSMavY|@kjdUz*s;WxCj{^S~w`K(|wikt*?lsIq^#jV@W zVbyhauSBKOi1#{<(1L#v)4lN$Nx&v-0(FL9WA;bDTZGt+1 zYNBi90MwRq;FGh1R-v#2bjsz=RNVvuL2i{-q-^gC`BR zGu!#hvu36asd7;lAdb}A7S@Y~@05jG#`;fat)}%c~aC zj!>vW**@{}@Pwebd2z~t@lefnK%2k`nl>9pF{@mBZ_J{yeHn^Tl?q&tJ38aRFQ!ib+HD2v+hmkNkU0F#px%UV-%|_prkQ~hRa9QyB;D~E#9u@k^ZJGY zTc(3dq21fsrY06NK-y>!TY$dH9IQwze)J{~p$bE3PcY3sl%HM!NV^sdpq-1$1yP-_ zUfdM7cb_oxtKFrF0R(X3Ftn_q>(&XK-|V6zy-+L{V{`Foa%P|938hu0_oXYpi7<23 zrmmfu6c6q32J@3FZUIla28Fev%@~ryH;^wdc@W`?GDV6+s$oMGYZ_EbWeK>?DYnb7 z$jD|cwLfqmi+=vJV?^!PtHVq1bc?A9+yIIg$;KeAW7z?brJ(1(a?Ud(Xkf0q&44Z7 zrn8C_l)s)hLV|!6$xTx~H)ZrAjarO*kh{MG>mO9q)aq($X`v7V?oU<{l(=`+zE)(* zbQ<~gBJU!)L9nQzfF;@^p9mWkvRTk?A0K$e z2^xq!iYKq)UAu|l(=sX?WS$Q6y%Nz=q0j%4r}BkAxVVvef67uU!#^*bFPNM9`PJ^w z9xw8IQq=fSw!cy;v;^H3^XPCqskK;xfCz}8%Tovk>Q-dGn5XWD)O$O(b|_gh|HM*M zh^9lc+kwTe(b{7#T$l89b?pH7k*;m3+bOd(`{z)b!~wMl39-u$`9BWJ&V>xTH-3NL zSq76@cFnz+csOhK?b)sQ&V6#)&K~L%&(o(H(W-F>3onn*4MLy$p~8ooh-;t$GM`t) zUIKcxKMIE%j;{ig6om<*sDSbK`dCLtu?}~MDrxluRo#jIa|ItzQ3pb&D2zc z>6qvysk^_tX?l@!=Wq9eF-$H6CiD@YgTltJqWV>`%%yMBJt7gqwC8-LtL`qpFdFdt z>0C9hfQn~YZTIZ_tRk^}A!U`66f@Eh(G8>OigkWM>~v5tQ^>9i$%>TuVVG+OY%E+o zwVO{T!s>8qZ28Cu?UMy^y1?g2CdXuckrb8mjEtXw>CSIlzZRpe2ABjDhk3$)(eGyviP)*0V1d&e~bF zWz{KnSA%0yTUu*HL-Vx6w@RBC82l+)6>&;)`6lXc+lR!X$7J-#pI?8{AT|H$D3!_r z6cqKADMqwlg>vmNhe+ZW_B-Uo%Q=A@oz7OHJB*7ZmK73gSfeWp$a&XQPm3& zNStQ;2KFYup9ZIfO3AvnKI`DFi^XPB3oEXO=bLNmCS6+qeJmE6TuPj5sd2GzYN?VL zOyuY0u9H&){F`rH@L+*R`GwTa6gIUwCeFuT|CCT0oXd#DlhlkDZ((K6Ma)Gz-DtXD-u;aFnhNxxe{Vxy&zJmoc^&2e4Cpd+aPuQ`9@=j63bq54)g-_SN*7IByGx+ zAj!IfvR-n2_MukG!o6^!>V?He>b8Yp^(SMg^uBC6T4xsJjx3wUSb65t(&7cwV>xbI zNoSWf18jSterS_wI!w24o){^Tuvi2@!L#U_ob$skRpE#-rC!{ia4gjoFZ0f~lfQAT z)bQ4W6_;K=9Jwa7hY`=<#iliAJrR`$svdzAmw_mtg4tiyZsZr1`Pf>v%w5PsN=?|a z1@@~pa#1tDO|ZY&QChcnmpsItA|c4X7>U;cJECGJzCC1KPYgfUB*t-TIlxPaCiYF> z%&RUfqV9DBp^bFZRY%d+04)YZdLzajyk#mD9DZ()Waj^|pxOP0wmx*5?kBgeGptbngGdR7dY~F1X66frzrX+c zN_EXBR0|C~0Ud&&*B92G|RsWI(U~)5mveM38a$s&IrB;9@qNHd%XBJC`D% za?`PEjmCoL^4dx2Cv_L*DnoQ9;)>QZG%&so<W@ws zMH5dLdJIZbR8`Xf4wI!j;8&H5?b^C20LSA#)TA<&vEGs`Ldu7GkwJ;MhS9jq?e`;e zl$o!KE0pq&1|~cGvU4B*e(s*7Hk;b|6t+iFy@9&|y3#^Cx;nmFylpJ&=X^YSOkJCL zIWEz=SycU8YIw=-^Dc69<0DD#yIEn!gv&}Q9ZGY7#d`k*cnOUwb5TqnHGuddaA^+h zid*YFcpiOulX?lmLp#7Blt6Ti_RnHPvAXE>c+mi3(@22NY86ki%_w}uiQ4bCb{6)9 zj4UtNG_{m@Zr^MgEGi(T=|dJE*08VvAoWs`qKgAw!}8J5)ku@9A`6R4A2Ad^4huy} zAOr+>Uc7UcA8K;X`L|?jPXrf|(%YWEU>RVv>DtAo(|&ZK!Ww07IwYm`Own|114&+; z6xss=wl&6>BB6ed#CgxegZ1*$XRFH-UdbET!U9i9z!Ua3EyQ7h?E37cd!sSqgo@#doD5I)ty|Z>jNv$w-Z62T z-xeaQrx+L+g@9KU)7rsf@nb0($Fv&Po}$^RYrbLj`?3Z4IBb=U|PC5qS zH47zEKhiRUWXZKvQJ7bYNbM-;LsI+_5i>XZ9_?4v*VO9}9%wO8%r}UBNj>8K>BO12 zZQ-^#MxDzJt)4_2Bd$aQpF*jj0`(fD7ucpNnr`j2*e{ofiLKqkuznQ`b{K%BKgAzH zj>`?)3c+4z5C{xDMLHrE3G%3Tg*E)6(Fsm2u$y%ZWC<@@BtwPP){c%wFtlf?;8=zG z%Y=0OGFh4RCv($9rbBMY{^8G}rUOJ&jIQQ#m29ybv=8+wVsW%ybHabM|7*70m7?p4 zCg)_DzycB6W}L(!zj@E#;u{u;=JOADgPMLU8EaMj`9oS7fHK+`H4!&EUuehlb?VU` z!t6e2=^RiImfUpNf)CRqlp{DkqnK1D_;P7%Kd`UTt~Mpw{uR`V`PZ3e)G&AI4Lk1YQPhnbwc$D7(@#d&V5*%&p(-> zELm^-ZYyzCt00Qst*bK0?a)d4KguH=AK&!6if$>05j}jhWoO58Zpw{S0UxtL;XHbk z|7pI2%G|<_On5jMUX^*ilv2ihZul!I-4{v=AG9szG}hYN+xu!T#NFh*S+T3v7Kh4q zszYe86tx5-i_0;JLo34wc`HVlY95% z(2w58S=uq|w}N7l=c%yi%+k9n!Q2_vufp;yH`0)?6!al|FiHcaP=n|V z@|h+SeMA~g2`rtxSAG*PAX!w2)+HD+aXPT^1i%*hwBrO)8gU}TDz-?FQ)puu)>sw4 zcq40GyrkH6Yo8qEQgj5p*`4a@Uz#%=U{pcr_Fi3s_Iw;OWWsL!w1jZmh%0j+j8J^3 z%fZ@t;k}egV&sy#+{v!pyDa9mWlIf}cyy=b<~GV1cTPji7u1n2H}7>3DM|VJBdvzW z@+%wWKqx+MB1zUIqQxd#?9dDLqr3DC%)fQ(MaMyG3}on9^?j3^!=z>2K0tj$8H0kr zqo=|Oq@40Av*HS8VZjs>9*)Up>JMd*{1D#fKar6)5PIq#<*QHNsAgqlm3{8mLgd+B zXD`*gnH68<=Bxo;Gfy!OYTuZlrw@#MjGOxV_MUsNY3Gt)!L@gTsi#pp-kMf=olOFo{ruh()f>rG|e4MQnZxW>DE#Sz-x4R-W49 z{0WO2FE5n`EG^Dgu$LbDwDR)OVyjq!m{aK(uhbk6kEUPe=m;@x&yYW!4S_lLNUqz5 z@K}Q)O&;3kMf%$r8waY)LoRxOiy3n_a??J#p)~O}K0f_bu5#1Hmkk5d|0t`VMP!cV6jS z!c%*rF#2h_sx)8pY?+Yb=$RuI#{%e9T5+cW-R%d;C9u(f9^_G)`<5@qme2@-#=4T2 zLcq*Q9w3*|w1&ua`=oFR1>M;T(>3fKO+%F$AaEt;Y(r_Yb92T`tc*n5S$brtpOxbG zhB?i}hV_Q#mBGq=StD{*59nbksf$>SkHUCflLBo8pa`;8Hc|CNj>DP|dx3<{l7r7) zK5J-c;lzX!*}Sr(=<+>IPEa(15mPfU&3#|wa;ep^{3~&8-;-lhLog_e1MM*H^|Cc@ z@KwJg=U>-;qwbR@?Kf-lFu$mNkn`)Y)5Q}!F5;Mqp?nx@kqGbxXt(y&E7@I35g$Io zLxZf<1v0CUk|p~nzWzdARev#!nXkD>wkP$KqOtx4dtItQUg;YdiB3yPLuK=3 zVdf{1IMm?vNpgWBp2mz0ESILFflE#>dq7^HsGR!{ z)fmf{7!F{oFg`GLLso;;L)_x7NL#QVm=JIR?HRZ_2Y@`W0Sbj_4l7P>{jyr;>^ZGA ztx%IUEEo^Ep1jUh=gQBDk9h~>8*wm#uevD^tID;GTEDO>6sLnMNmhYW0w*zdJS*si zCViA)|J(Q)w#||um|zL;9!XjhkI_Ls+=vT`vX>z3*rF5$h?Zn*+))zmQALpv1}W9O z&*zIpv8<(W^`aUs=Nr_QoZkTPB(eL!ufkFW5WP zM!*V5Kk=l3)eF#KC9+;8&!&76z*{UQxPaLIMMZW`?#Z(t~m98d$st_c*n=rru%q@aREsH|^Y(n!Rv6qCG(GZ#JXnG7;> zT;DSI?Fl+kRKQR1O9}x$LziQCH?D9Z82I%Ktlq?YCj`t*4O)D~?S%-k6Gc?9+p5QlOr|E>BnqV=Iq|uUL_l5?**lTyid@bJF*yKGJ;z~ypaA% zu`WNovGp7u*c^e`+2Z*8Q9v)G5`-I>O&-7Y@}ymzH~m9-+2llBx{H;?&(mJ3fE-_to zN+^5wYLdbXMKZCnX?-c5V#~pKu+ldIGa;gAAng`>x$Yx+qUcCN!XVKB0AnzIcN#qL zSUUF72Htd1PQ12e`KfE?cBj!@-}0j7_y||9J&VxZ;Ux7s7|xQ-YAXM=;m6N^KZ!ADIUc zEEj>I53$*@#9a{6B<%4D!==u|a#qq`k~946+qV&J*))~&OeL@Pi?%*8HTJAw#=pyFZF!bEdGf3DWJhnQ z#^?a&+laNXXwXDtWZ2N0ZAUcq1fL6DIW!PlYm@N=SnGX|Iyw~#R&ffxufE$U`b~f@ z)XD_zn;)BTCt)$XOQ2m1UfqSUhYy|GUH16`~rL zErkHxBzB!>5$a&^LP*x+pbfdCcsOJUFu|5MSlZj%8=Bt< zHdwE^@IH(F%9CfY2IsR51%3T#DYNBSU-42v!Sh3#pv~_6@+AyDEY<%2Yh;)WQ485v z4$dtzh+d=+1;yv89G&TQPR4KJ={4OllAxS7Vg($ z=;;Bio06sg`@y@d%&ZYRNj?Nl&=1Xnz_tSmCw6~JzIMUyMOz`p0$&-zf-Z!n@{2Qu zO4nxn5Kc^38KZOI61j^6;KCQf5TTp#C)%YJy)$WJ05Ndz@r7aBlnGFoEWbtm7t3J5U!fXs|F(!hd112mxITVC< zvX-3X*Eeb);%s}_`M|Ah9fB+io@FDBrQNY(_uf@_(Td7QM~6J=cKeo`uuy8!LeZgk zYFnDGqMN&#n||cr!NJ)>0_%?1a}P*`?~1)P7ZMVZhH{7eTDU7@PUO%fd%@HU1Qb5J zOBLAF0}D+1sV>$SN*%7!0TXBC<;V97+!Ry1&6H`Xk5hI~c2m}tUzL{~UGDe2%lASn zrt_qNMRX=6kYr6V27C?xtK~QE8w+*W3r5-sDECQ?1O`Gl+{6&p$!clD;S7AYs6}^9 zS5|D(x>;4F0nHxSkSDTf6CeIX#_hNn&&Cw<#b`F3cj5SXR)VYcW>e3zh*smgYloBW zZs$co!n$_uo!7Ok!v<0-;k!o6=jBaG4uDCc(a`+=?zzeKQ9(X=%!-Tk|- zeQuB5*8MoK7%vn;Z+P(yb+>LfYiaPa&E*`ELly1=lDlV$gx0r9n%ywi`$LOkxV!rH zN!!FL-&o=*6Z9r;?QjoL|A!A+PaE|?YQqMy2ca4LRfRI@frw8 z$T~gHRW9zG)G=e`q8_A*jtG9PyD2L5hc4^+@m~5Z9K*>v9Tl{{SS-R0rb~DBq*vm( zf-y^~Ap~t=2QxlCPI&0bzuXkA#>Nt%*JKf274j=)uPC1eU1aZ~JOBsmCYub|TmVD$ zp&@2`3t+rBfaXPV0D#r2gXiKMXgQY_r0@o)8$T=G)OfOjl4nx7uHM-x&BavkY^bzO zqrsEY?Sl}=vXfYf*&aD0gk|+^bVs%s(DcNmj|AU`^(s*#1Z*bB`R>uF^LwGJB&Zow z0FEGK<2{=k=@}G_SfS(leouWsKxD}H*I2QT;H(`S;lI)yN0_!o88#Q^(c2Vx_0kL7 za5vpa7!fQ~JyD=J#2&)KCHOfOOr#4cIzwNI38MJAb%)hR|->SQdkdBGV0Ph#G;(s&by#^zj+Llmc5IZ)QZxWv< z`amLI#JmrU(>lWFRe6Q4&lD9A`NhOGVnSW9fW$R2G$|>n`G+!3PSP>NpTG7r$x7)E zTtMf&=ikB#352gv88=-J9?9=R8LCf#Eyzux5C%=G&HLRMP)|<6_m?P@$-Y4f2L*(8 zK4LF}!s+_=sSbn~H*gpZxw;yFDhZ=lEre__%yCY35p^<^WyJ~!6klXq24+uoD^^0m z)X0WB*Y^B97f@Hwq@gz?rh7yOa0M_-|1YAqCUOptv#>7nzL}5H+o*pLtbFRg`6QBb zwDUR`@TF4dcHIQelFYv#Ep$aVf&0o@50~{R7=mz6K=oM- zmlO`lg9i^Xz};^qgF3i}t)DgAy*mdLiU~#ovqD!9Us}M5vnWe}I)LMO&~GGHP6}uQ z$=WrxST!=*S#$wsbQdJ2^nox6AUw~9U_HPkE8cK|#C(VrvjD1_n3%*GwjO#5!$(Wv_#xRR&KJ*KzmB1pz(wmDJPk^7RJ+r4F3jYZ5FI8e zIilFN07IDqb0#u1!(u)@9N;LZ_}Y_G@s0oaey=JI1slvU{t?=l4sSTScft^=$0G+H zV__P|&qVg@HdzZ?7GyF$BwJDsZ(r5ONg-TZ=z&?>u2<7xx)yj@U{O@OxSdBR=wTv#k-X}Q6ICVF^*L{zRKoq@-v<3a4Z8ptL z?+FKp8i<1s^i+_~abszkZ}I|6B-qN1_lI>YTY>UF3t&$yB;$bTZk^g6J$(P)51WK6 zv_!O;c+`6jhupZ~ehzzj=>tjFfVfWhz(jOLdVM+RjcER`6KTGcdGZ!kG_$5MTDoptb{< zLm`)|ccco#Urlr`Vt`BjK>4RsVxxEJpJ%9eOp$@M@i?)ZBScd4acP)SF|o5-%z1Nj zabYz_3F(9hH3kUkU6{|3Vu*2R}GJ=C^gT1S3I09o`O$`mF;sUx#cXDtITJGXq%32lUSxbYif$DDq0>0tt~+oxP4V zJSs5Ms6m+sO!orrd@cM&2fNSw9_EGhN-z#mRNbzeuIbl8NVzM=><%R5a1Q|@YNy(*5dr6F=0HBH9$|!Z6<@yojYIr zeSJbOBgzF{o9@-Qzvjmdkx$hvjmA4A_e*q?s1=w4WETTVw; zUe3)+=dL^Sezr0oTJ3>Zd12`5uRdQmT_k?IOj0}X`iX>fNfx+E76*8jQAijimXZIF zg&cBp%xpb@+GG5iLWOy}oVLK91DP)PV8)Dh&#f|2*? z6Nym8BX$pAOa=1}dtw2Fcxr}?c!Uu|ux*dc8*M-h-i^|h*iew)uI$ztg5_GqU@GO1 zfQR4aic@cX-(fqLPuwJP!Z?a(_sNdhzn)ieTB^`c73{l|w`*mF-o@~spzz87mjJrf zkAt|{yo8~|kSj|e#!b;Q?ay9{~nlH5jcIh-dgU9yS}%9q3-Jy)|IDk~Vtjhb z)`Pfo;P027EJHqQ#1VUY^aiMBY2bsA-GGRL4^BnHd#V})gS~tAVm?q2x&K+F$CO>a=&9srx)O2vsfqx;6wQSER4-f>#BcQcHxxZn470`c`~R{5F8w2tfM4RA7aP zO-2z&=2RIOqdvz&hb^&{=Ivc}Hlcb!-e~hkG{Na;6hW=Vl3hI{({aeYd2M)E>*ODw z9uszcbMqqNsFn<0aJUJqb=ZWIm~h>tcig!lTlcwNzq%_~nOad1n5x0KMlb?o$Bp4k z8>$W)hHs}5aw{avPZ2DYdIF$QMXkh&JsUEXg_`-3z|n3sILHI?GN>am_a2*>^vzaIFl2(L!(0RPO4A}Wf zS{90gGlhkP!B&=&mX5CI&b+gmWFylrLJNc*?oJj8D@i#EEdiLh7$|#t8PSrU-b?kf;{-)?pw9AzK@+%Sa`5E z_>l#Qg%Pebsk7e3H#t6*PpbvS=}VCJ2jt}<2^x6haO%6y_Q(&TtkTlbmbqNxp^9Q< z<$%dBNrlS>B6geY1lWs{^-a;YxS~4afkGMiCX*PKA=DAoC2`e>ym--K-tI^T*X%6k zj_hAC;ZL`n)ty>gBn!YF6c=Y_>c=$WJ0i}uyc>8yaJV6FIp*SjD4Z#6wn>#jLC~F{$vJ5b;NPis`#xv5d!$Rl!7UMsC$TQY@?d>j1n zF=oWP)sB>O-UY-;@tc-U^5KA3)8!n8!Og2I1PPcnwh1^U${MM zYLpUYFF-I8uvl=A$Z{8Wp8P~zP&(TBl3babLpyG))xK5XBTCg4rm}HG{j9K3?5$ho zt;Wl^^6M2GX9x5#SXOWWVwi9ybjfI7>T%M>!RusmIf_>~@PtLlmBK`C7d~!oyM}eW zg?8QFT@@5+kj~=#_?zqe%fiPMZMWHt9h?pJ{x+_bSiXO=cgpe)_n_*k!P+Ve?rM?e z2mRsot&gTwQ#WxteOUO|bbu-z!T2X%VPVx7K~|5xzM2?Mo6?NYtK(V0Z~;VaxrBmA z7k~vp9pRuVPR+n{;xY)%sHdVfe0jB#fq|BKKXG+&*OTk6zg#mKqB`TGIwf=5#rE!8 z`#^nYE!dI()3AzS8`3;4u~C72za|-@;t4lnkiiu2OlHG|n0N5Nn}uZ#ALrJ~29kw) zB+lBVQDiS0KA(Ncp255R{l!r26v3KJkXM5b+=9A-*q{)X9O53ekxd6>XcjwRani=1C&Ai*?$zb5DAGurjm z-1w4_h97l{{|!m%=jr3LwC@8#wKEzoMPy_q+&z}Q9ORmvpb4Zyghe!|sF^uATadgT zyEyI3H&e0}5jlTT_|upVPw>*0$@#V6#UBH!uEtA5RQkV~nSPVn8F1`Fv(dRTSM*?v zgET{$BoJ5(z`-GI(I}vD0SdKMzz6VcI$c~SF;9i@^MlB?g!Q_8eIpM~UlP`BFSx(v zik$8HQ=zQfs;X{t6K58yL2CuLu7g~d1LVOJ#+l0Q?_-Jk6TYLh)C@f1R^(YJkOG9x zoo%gHw=1tFO$#!Bi`W~Kp?V^Go3GvXO^+XQoEpjFZkk9%s3rD$*ryv5#wMr@w#i8- zlZe$e!AOA0=>fwvFLK^RdO4t-uzvaaCf5-WA+*RvDk3~mVC9}nn48Q!=Pr=tiaVa9 z081aPq~r$@hu?;O8?l<|)bLHrbKW&|lY8kY=R_zq*Ad2eLZ#K}~^EJ=Y@^Er$K~w(MAs*6XJRD-i&&)tuQgv;^uD8YOTW;-x z#Z1wQ)@)t6Wn4Cot7AT_5Y#rmb+trJ&W6&A7HtTf9uGvv$Rb(58X*13K)p?M_?VA= zN{0mR-r@G=b6<@o3QW!$Zg$lSN?0FJTN}PySZrd#!9_OuV#NGHXBH#B+=HFDyLEed zM*JcpL?1ko5Zb6+&Ywy{-Z2gtx!g~%{yWF$y54%1mm+?ZpC;#-mtKAC6Q%a>8v4Dx zyKA5~ZFKMWKrG5hQ_OS>V5v#y+ko2MqR%7tZXO@Y5|ZDf8vj~96{Jh0o<6&p4lRYUDj7EOCx_O>dp)e);l zH+&s$!T+|dII|Ik;wc0@A#KPL@V2vM+W2v^!vE$+HV@;ZflcODc_VSFP&Dn69}AXw zu_6$$k5D`?*+tX6OCx@_1NA$jqAQ1;{m=4uH7}Er%PGR4FqngWA`D3a2q3Bwc{sAc zf;_DI%bVLKY<0b)1BF-OKFYm&RT}8y>&vRx1Zyi<4|(x3QEYARxNLP0Ae%?=dWxoq zGk4Ptf+MvNj?+Y?_A%(JVEg^>OHp;8W^BwleT--GW*62T&h(r+vd+6wBGn!pJ?}Fe z^Kqt6$8N+j?Wj$fnRuFuamnMf7*1~PU_?TA#@Yd#@>-aKZ$csVL1Cxt&D^i=>Zj+b zmM1uce(syq?`3Bdf8JWi5ixVkXu}12ftS}eufV4!By~t=l0AT$0}V!nkJ=p`R9F5` zs+P9-uaevo=C|&EjdJr@;q9|O``UFL;yxgM;V7g3au4*9f&OYz=F8AxL`R1 z_k$HEWDHM(K6O4KVn6%r;Cm48fFI8&pe!A-05%cb+VxyM7wT}OaOYe z^VNl&@dVsJKNtc|3@$zWT@Vi&w%ENJ*8~J8WO+wZiz%%zfx;GIWH0ntP&Kj(qg#lMJ z;D&(@WeN^BLc3D1B6Bu&yN;Y=8B)PhhQhaTkOty%bzG$7&2J2mk@QE{S(3xwtd zxLkO`0SFk9^r@Hdaz%EO_AtjksrF0$XqaoQD#UfvOEyAfPdKd|~n4`OPx_#sPqsu;D|3 z;?n1~JZJ~h_(6d9tC7P`vG=tIA)kd{7KzCX0of46`v5(3Zo6p~wtWlHqv6^T7$cks zQ*?05))6h>_(o)nXtZycsL2Z#2ah^|SO*@4BN7SAo618^VMPbvfoBt@azxw9azk~p zJMCK+FB7}Pa0L!wBkGf8Y;;OYN;)5I=izY?zn3WAWe^L#=!|PKo|m& z`x+FeHUOB(l3`3hvTFBExUTFe?CmpM-cxA8)l)cAPJ}4SKtlqOXd@*qw-y(z_xpEN zYAxVL#oyguO@Ta0k)9dYAstm4pM!i!rO^jF#dE{9AI3cj#@C4TMR+t6w4g*~+v=@9;+c>_B9*lwbXf@EVfzIjfEq}9$_J4gWH9G-D zKwz*kK#npje=2#_9dzUb;p-Bzn5;K|iiSla6sk6=V{+TFZO$v`B!q=VBM~}a<}C@W zOE?p3GAv;=Mi_tq$mkeI5fAcQ})pb(jsdO6*d1-xGmb~e%Y7>#wHooe59 zi?HJ?g_N1Sue5><~FP!p-%t#wYw5J4eT0w5(qw z{ev%v`Pl^^~&1ya0zui&Ta@11|X^;SJQHm<=9|-*Wh(HI5}%P%AqYKwAYUx zZAOoCz$fP$=)d7i$Q^I)f9Jb2^}pZ#3!oMz*a&91e}6yPMIp5@oH5f3U1p-@LA`Lf0aaX_0gw?ezIc#to(k$gNv(tXucb>M+cE}@ zcA7eQOBi<|1Ym8~-IGtHgg*xUJ2ZJoJh0{lC9@H4TG`*<>LME??u3Qe|Mkrsq8tVH z7HSh55-qSUk7E{l@sW;I-DjYNmVieHs{$N&&tgT`*b=LVP;Q2-tgK#C21Jk>&V;Pf z04Fe>yT!5G3dzOI37wI*|89^x`hf}j`MaY&69ZZZI{)F6?_N7fbROtO5(?sKGS$Yz z7*<^J8V?J-JRY|FhtA&B)GGKPM&L&nRIj-EL!Yp~;4=&Mp>=l6Vt^MGrNX8} z%Dnx${-ghWOoEY<(9>w?qVBoSwC9BLvM_s)kq@9ZzF6ioz=-KsAgGjUG1n8JB3dp( zE@@+4`t^$~3X@rcDO${0`)TiiW^e&;tpolTvis}SU0hgDi7&7Y&Hqjf@_0Tqbeca) zE#fP6DxoSV@nAL=i~xd$^xBtcjKA&ilOP-QM@wLgNKzPlTuk!JN*{pxl8KQDz*pi( zZsG4M{JZ+!IB03`|J3SB3)88u+vDG(Jto|iFJE#_mc6XH2y>YX#AVcT!JtoLkpY>Y zd2HUfJjwn(OlJr_DsFg%!iivz4(nl(%E0)$(_$rwA_qU1jyQ0DGJ~i+4zq`Zl>RqX zQ6J>@9|xNT*9#v}5SxPDc){>D64*Pz=8@GIQ5S|Y;dQG4lpV(aJ;CM#h#S^KU(hnsm+=G-9}Y$SWz;qxXLJ@djHdRCg0!->iV-4vVrhyI-|P z0%?2?r2GTo%H$Ax4Lr;gw=ong8?luLhWyK*N{3>$ z7A!rBjK>=QHY zFx|c`OvQJm@OAxlv<{-MrvY6c2s-L;CWre1D2Hh|^ObY7cy;yl9dWupL>q#eSO^Ff z(+lUhM2w0_H~<^^_3ORzY{59P!QmkO<~}&X9A-~^KL{lc&Qnj`--H>DGU~6k3XiaOm-qC&iFe2~(ovdhO&g^uoCy`d)^q7+p`tHOwi5;F*$%&*P@jHs3C@v5aGdvxiMLCErF z*fpEF<{+@@L%kA$nLNt$n}buxv3P6TPzc?Nd@;jbSLj!2qgHavMeN-DM8C~O*Pm9d zU-SYV_J3;;){i8iqR^q?w8xCCw8vIeQj%2vSW}>N^5jEjIH<9B$m%841N9Q0f*qx~gp1(j?^rPt$53&sQQ7W>&JX3Ig2$ z+tw8>zDMeXR<3QWr;pBfdPvXExhAN3s71 zZ8`_|GVcb|%Cn&srK1`aNt#L7e7UM{tVbOquWNe-u+K7Rabd0>x5JG`)oJEB8|(5g zt+#f%NhCS%f_`yuL*?frBLCd`nuc;1O zEVepL=>!MFRuP9IWAlO`!a_pHN7sP=8#8fni?4vZ(#t73?Xsv`iC9(}Q$@_E|EEKJ z_y(VWOp!^23L<~I_ldW9;3JaM2j7bJ$LjMt{tsJ!9!}-j{tv)Q#zY}RR4kP-i3U-o zmLXCyD`ieailjm2XbF|MiOe#FG9{Uksg#mTg(5QLWc-wW z8Xpi)2-3ownL@2iT>L|KmE?rjema@naS~S071BFA&C#x~$wMC@^r4Q!wKoden?FUd7wJJJoKywYn58 z7)kfZ{H<-3|3B-uLKHr5SQZe?%?Fk4eO!)9|3g}1-DDe_x^auk^ltvSRBExixFGW< z)9t$rfmvZ9$gTVo8jWzf;AJW1;xOr{;nfD=Xg!&wo{*5h%fsW38YU|*>X(hP<*w@~ zYN=W!yAraCK4#~w8lhnMDdUzw1VY)-QCzjyF&C4Q#YI=F*cz{eW)xvcT#T^0caL|l zz3IB=+Gkq4H?q6z&cOtqhTp9Jvl6|~j$)ViYlvw;5AHG85!Iu&-FR$b;_i*e?(0gg zGc6khlX(j6wY=Cwh3W_wnegT6W|n;%r;Clhzg87p}0M zXEq1LUvkcV8C$8xqO5vv_~}~MW`^w}Pz%R?{xC?J>0S*=1ZmhG!;fkUCL3`eQDy5g znac+&P2Eh>WWA{~E51!8e>~p3YS47%pNgdRe(bt4XFM-L+j|wLGhu#vGbAXPKu@itJcXHJ^ zp5=fd4&7!lpu@i-x{&hz_Dinvx$ja4BaVbF82RiZ^BLgVE8KI^Ten&b4Zm8hsp;CL znq~UwfMj%3QM`Vr){f9PxxKU2G#bF6R6vuML@Gc?ds5lteQ*rHtYwcTFLe_p@H>D& zwSm2*01}e9zobsV6P-S02POfW>r?NoG`N3mQ;%er~Nbcgtp#linHHI+c@;5NGhRkId5CAjlqw0b$UImB@W~#j^@VKuVaxl zv@_dQ1RyRMG_n7)*##Ki$ctE^?tANz@0>oSOG3s0pW}Wqt^)(Y?sd23?M*Z8C}_;s zdwpFOGc6!MU-lj(CFv-OO>l&gVRxn|;9ZNY1klPI`P{3B3*zs{>d%Pauf!Cr-rn93 zoIK;r=>}bou5lNw@y?1F`FWE#0KvUX~9g2SOPIrr^jgfT;^8GLV9RZp>t zF2wywxZqEY!FZ{Sa?-Txmj{(0>i%1~t>U!)=O~A+rG>-We65qeK|D`1?A$^M{)B@^ zA1Hwq(CJ1l$%fRs2TfxvqY^n*c;lHx-<&LFfGQC|V)_iG$`DxxY}?67j2YfzU9~gX ztb0Sp>+NR}QiC3zo4$nhAIM%PiQ@)r3f;aq;%pVxSr+(X98dD+wNsOWyYGJvi|y%m zkZXSqhz19H|G+>1`Z<@1tw%^hdfsafb~tgzf#SIh{V69} zQy^L%Z)W;ym?4JYMX%`(qag&vU~UkfEOCn=Az`NTsH5n?0@{U(S?6o>^76{3(c~@Q zB`A}MI0MyLT|)yq9N>VQv>(5idELRd;jd%knCB|49d7OF_FrlNT2oyCG3K&wn*MoN)aan5?u z>u8Ws-7P$ zynmmDHViOCoQva@U^+&C!W9EPXuAH>LXV0AH^RBe z%4-Kbu}VUwT5+JAqvHkO1`d$X5QkyuBk%`!CR~suLj64exD)w~;*=9z`E(BKi5imn zi>!aFlM`cjP=H#d+3!P1*IDJKj@FY@`gwim{3+n9b9z-kB`H#Q7xUF9z25Lp(MW;L z!9?R&TdPmKz&lX8s<|oHrX^w*KUWCH8k0OM{7slF8VFbCiRK{Sv~Im+0jRlCplq^| z*#m_3E4w7$K9C33RoP?{~_Q*h%NoLq@tjW!R8*R==g zv@9HNcPpr(I9}dmu$u4b&8Sr_Crzq6zUAV32-^fHnRTmlk)^S>K!Zns5A}1E?~jHUc@R z2j>$YXhWAJV)cjkLqTGns6sE^P=@3&jz`3$%Ac`cRunp%&pMFB&hTUh* z2Jmuz4d!60>R3ddT(^QX)j_6SVw%c$E1uBz(nP^6(_EirLHTk~95wHKqou901PEC} zEX4+Ka+W)s46Sl0=%^>at!SigBj=a-{^CcqC*{d2P~NWPjIdZ+R3v{=du&-|R7 zDq}@EM&m5_IfoR-9ZyA|>s^De<58p>AL}iP+`mddpnh&UG8y2RP#``Dm@yan_iivg zev=nM$qbxQCa$h>@TdCmLx2MR?V3;;q0XuBoL#zdWzW6a^3C%w{v4S>h=j!KYu~)4 zM0&;*;T>SUGI3wFu-5Ijv?Ow|MhsisKm6s(Zd5rmnj;3Q=2;Yvo7@AWhrywXczMry zdz%1&SL!v7F4~iDum^u1MZa!FM#hnn(-5YVpB!#pbF#nt`n5aTyB4ve#ml6cnLjUG z>$qO^Q8;XDdx39fL9I(>&AIu&h?&s<4fM`M$1NuhM-UN8MTIKbCk)yfwTTRdmca4n zO*u?&}g_?9bH^xPvZpI6{D}&G&&+&x{+P#Y=ojy#E1pMPuzqGV*;9F zv)&1mP#L%bUZC-B?C##@))S8SrZg}{OL=n!xmT&(0=S-qVwRL2G#W0)RGiULC(d?9 zR%-RQ?4O|lPPN*%?&Z2XL;*33l4JMi6ep|E|bMN3uz$z*GgY}ojD3!Ta^L6sKEINZL<^)y6ySaiI zR~P(6tVqB!L+dKv1coZ~G3e_;>FZq0(2bTK`|~@gyR-8uMn&=#9+AS}fyZ;WHa2~k zXxG0Mj&Ms1*jz}4DUxBGKo|ym$Djkj$f^+7LdE?aZaYg)GoIC<6+Mn!K-HgUb^iV- zKF{L5jOJ)uU!1-)ew*y2_}7~b)#KQf5*H7k)5%9dv_}fwFqwO;yw#CJO}|Nm2&sG@ z6I>v@eMR5WbZ!W3K)-{2HHg`Pq{#u4AEymuFhP)G)c_iS>Vf)d8W9YAn z)uCar+gqq^6wMZ!i8I>4zQzBIfgEqFijTL*=o!l%CmAsi+zoYLe8q*ix^`3VB6g|z zPUW|oU2^&s1#4x4c>VDQA2owfiVN=L=MMwF-ZUL77G0U>y1*amM;flXRMbgrD28Bp zvgvu&ycsad>izrolfb=a*ER(0pTKxFC%bjYMtZn5G6kxp9-hV+Z}N}(s{Ass%iViU zp?rHgM}~%g{2Ck|--Q-}(OKg1<}z`{;U*az7|^8A(0o#R4p!b_(FmjKWvFdgO>OzU zIFU(^#=n!sOS>OS7p1Ql@@%zbOwmjO>4`jTx@4wF6G(5gOKA7^&>mk_!A+HD9Mf31 z=kaBhmV5@FAUKX?h$0x;4QbQ1{a#!MoS2=RmR%z$X#yoSL2ya`@&Eu;X+mnM!wsKe zX$C6Fm$;Wd0d7Ms5Y^2GTFkOJh-E_Qhta#5irJ`nbi7K{Zfe>WImb>t+F7Mu$-$jY z#*=FR{UkOF{8LG+WiqgRc(W&h-aJm7N(VG%3?BBS=zf8sJQI6W$YmMzxottOoJ=I-x`+-~Us!!2{z7i#F1gngMn75=UZJCQZSm2JDXy}WJm&xVC zCNcUwGnIy~EvxBEV@^G=>PpGXL~yb0mp?G$u2qC4gn z$C<<+4sFSGf-wsSTzaHHQl;kUNIcsM)GX(gLG`t1-)l3Bp?&%ig#oGTL!1Hty!(F2sw6Vut; zs?bLogG||uY%6FCp68Jp9zQC8a)*YifIKmD8-f z?Ay518C(pn4)+u_9h+1VZ2kt@Eui39$T0vayz)Bfv1>H41y|agAyFc7gJREu17*cI zz}*@TQcqu+BEgkSw^zO7(pmGmSb@eNsZ|4E34j4N(=D>3tc0(_9+x8tj)1#gDn28I zZUpZX2~;JpG*%2K#(FN@TPL;7DG827`RF+6&cM2YPD~5`8Ff`_qh`5dlz8F=wo#H(Ab-R7DM$WCM89e-30((D{-I!{X1Ir>Qic{ z?`__qZ-PKsF~h0`85>5JwhrY(5Irwv;M1p2lnVnOQI5=3PbG=bevgLTh^dI-0L6ws z16=|ap?T^LLjgP|vQHW;C-1}pEH{R3A`3znBC9SB7uhyNNkUj49K<|i$QGKP#^=wk zU^s%5L?Dy%k%Z?=@mD@ zAEQ8v0M4_vR1N9G2$9oA6P^JG>=k}Jw3j=`)Y;aCZp`0BVBSu2$VmX3JpBG#UpIDq z2uhIqh!erUDhYBo!>e(pXRs-z%z24$?<2#Q2;~doSG8!o!JKVRgV=|@RM4p6;Me8Z zI4BUrU4nS(={lVHYbazFkV+AMxDNpebH9H@o8LWXh`*GAcG(!^9~oHc_qIYCLv+x( zkl3o;2S5W&(2J9iM&#l`)Rh>1fXx09*Nnmy^UQ27!bG;vyY7e5gx%85vCPg6K03_% z_HAJh6mMF%6f#k8>?IcuK(;?L8=TL>FN*A<$NHV+_?@w;(D9HFDR>^hlVg*yRsnkD z+ElHC8is{886sYyz`!_#m#(s^$Gr~8IqEUKYhKbwDvvbSfguCB6j$CNROO`g2iF8d z1B%PX;KeYI_MVR+#e3Dn+lq_0tR2vx{vE!6a5SI=Umjtkc{Qe1kfn!1(S5vg13F`; zvtN1@9EdO#7gGv8yBHM$K7d$>WvJJW`_1_g}3GSwc@tssvv;{+#5lWCJ#uwB4JAJhK*dYhcAaU{DbfhQ%GBH@>5x%*#1VKRwV zJ#Mp~$mIr5-V99cEF7lgJS`7DCYE69z`_n8HV}{eP)Q z(DobW#-1}}Z_9OW2+$kHU7gvL5+D>%bZwQjy=}?THlLS^{Jv5iMeB%7?7CCY&J{ED7;Yxz*I>tpwJ&SyB@S31U4~~{C!+rHBeHydD_Scf|%xpyK%2UZ-kMirU!aa!1Oad-?@?$hC@-T65=Q$I)?1)I)F|g^O$4O6bmwnNwAKL7hHF|QNZ2L5~5Ek-zkN0s4M@jrB zMGHnm$3STUp|J+~3deN-1Ta)->7Bu+H8=b>)kj^2CmcdHym{`OZvkg+_}dAQ9Dh8C zAS92XpCpXoRA<1gA~a?^yqBRzrPpVR)Oem^HNErOAl;b2Kk!)Nm<%2&xogckkE`j zB;oF*6X**0cfZb25En->kG{RUP$Wlq@g}wy8CIY@7e2lyFkJ&46sP*FMJd2iVQnHV-~3e2Li-I0r}LZbk5c;a zS_z$s`fLf6MBI^AiN}*YE^75ZTdT@Whz+Gu2)-{)?)Fi(C=n3;Pw>XKmR={5A^@_h zoV7tMy99#(J<&FrxvttqX^v&47cFaFC&)ZITmA5?hW@4Q?m4JFu_c#7^?LP}LkYs=6-(! zRak#i=*lGo067vzCWw}Rs z$<0&&uznD(VV)f`vQ=@Ik%4PqqPpGoWgzMh=0ql_I9t!BO?)(bINmGVP;Y4dxbQ8m?P-b*@FDLs5 zP&#S|12T&S>c&;bx#0v7+WJ;UP|^rJH~gk6NlYuqyGb-CXC*dBKJ;56XG!rKp(v|l z?3JrySs=PWX~*E>(D4%C6G*ZV5*8){%v4k-A@N`ze^)7j%Cldm)`{%`(B5T^D{zm2 zptQppLyZ_bQ=~HFk31V5UcwQ6)hR60+gBkd-r8EW<3f!3hvT`ql;g*3-_!a(8a~^k z#taHl0bMHLz-X>cQ>1UeicM1GeT~tQOLiX?9}6q_*Fsdj@iv;b z27p|=%a&z+&T!g^VYoOdInc(D&6DgyveIiWUq12l=Cab=w5S0-eS~^6sZfi>c%>Y2j78Rn^a#oyUxXMZRDTLG8O&B^VqMXk2y`df36ZE5 zD)qZ-kKjU>Unzl?mmA`vq1+&o<1C)1;Zu<)YXHqBJzYWM{$p#1^6M%fk*@F;42+D> zfoUJ9*t&cOM>-L@p^Fvg3x%j}e?*4HGifY4lG%!G9LHB?`y(W?5L1A7q#hB7ZYnmK zCLtx*q#w_JLW35Lg^Y=m#-AL99v7UM|GgCkuokB)GSJbGY79y@DWBZ$Lb)KWUvk3t8m&F=<9RBWDCKnhKB#kuPdSMrSRIldw901 z{Gn^K+0|*_x=LI{yLat+4E7w98JktcT_D(pMrYIXj7}fY92g}TE8t(zYDBy|5?Xq! zhv@H!qeJq8(@O~`N??W5M$ZLziLI+^ICca{H|;uS^X>nswSVV?)Z-B#mxtr@>C?qO z3&yBur(qN)HH8MPps=t8T#e`E9s?be5m4Z2$q9Y{7ucnugZc_U#1d*P+GdXkP1XYa z_u$t^umyCBWRKXN5F32U`mH}1uY!sRiww)V%dO?FRJ-$$Plb&9I_@lI z9{9c_ESkE(KSK-HM%j$H#@!qrBtg3zTl6NYB8X zcCJL}4wR@1Ap#%+$8eyV^=eJ?A^(xEEkSvmdj$k& z^6+A(#>-m!dNiY%ErbjiP9k@Sx2V6`EsvU*DPh7P4=-G2*HS;=d4kjkq`v_3^!nF# zm#bJtwm4&~KgwfslYmpAq4reQCO@1^h$Oupra56f;X5@zpX!<22eI#aFia#_1=r?9 zY}_Q|g5i+9_1@*!F>XY(;YzH5M+aY|0mXFDG5!r)L0F|bY;0By&vSflU3}fF2(st2 zefBGf-vVH+`#sHnZCbI4oQ|=zs6ZB@4=)yMWnfY$oLfl9|0=p_0_&W3;Sgoyj;AhK zYWPYo{iW*H#1iNNcz6MDkQz5lME&Y@JA^FX^wiY` zf1Vm@uvZvCGiSb!@S>p(#uuta;g7^5)FvNdypU*BR$iVAh~g(wrB47oe|Y|vaq{UM zxB`jM2@Dic3oWxsq>Y&8o138_1h(}wF6Zh~jb3m?tzh13L#>Ep0*kv2+Z>TDA2wQ*0}L@j`V%@3G2CNszsd4BuD}=_oGV8vqmYYO+J?o8 zs*G%RJXM6TnwMP3yp%K<6T?qztH5i^vfe*61Svd%x!H6MFygJ#L54*?B~?``xIWze zPb)CbTK69pM7n;jpl2j8K_L4KqV#{d7JTLX`JNLyuV5k9!XOEsk@3x`>3@B#*z%Ca z7`1HO_zVa;8Pn6sosTSWVh1F)I%+MTnl>bDy2YhJ*Cx}nEp-w0AOLa=F`gtS2dtiu zRtc;P6-o{w{sl~h5v`}dmo}##TZg3%);k!w7YCr=)}CBNtQ)a2>)DG0c5MsVrb^wGXQs2Qz|qh|Mp- z<6DdTbtl&xIN|=*2u!HIn)=)x$Ok3eoAHz{=OVf&LWr{p~U5qsGxO zF)V(5emuOmWn)t#4~N*HE0QE8Gn7E}BtjKE)8O;lHu5I1a@zT>2f%IggQ?1qvHG*q z!$T3|_+O=E%~!Y`>rqadd0lST96*ESp`-#)iWn6I+QB@{0SeJ+5%<>X*VA{e4a9zR zju3`!1I&$Vg5i~m!#2UlW*R)cSq=g93vhZP8%XwzSLytYRRT8Zn9jG!mBn@tlR2*s)VK$wpF{6dXjVZyNd<>6b2%`wim| zi5w($CF8l6i`A%&)x(h7ew(9pd2kj$^2kII<4}6OM|VfewE8{i3z6P+1=q&Ent+ks zawXiV8F43leoiuxa^cHum7rRaljw`_j8-9Lw%I*T=)fSz0kXFdflcQC+DJp~m4ANa z*)tni|GwM9mRNXT^a6-OhKRved*7$e?Y}jH$2|rmh zqJm|r1H#P?7GH#OimqCpBQ}P$-NI^hytj;(c7YVCSTAJM5^NB}JYQE|ukEH&2SkzB zMsS1^1OUU(;71yJ=)MedFi}M(W5@L>6$6Gr(&C+QQ5;GE00H1ytXANHV4|ImKXE0N zq&C4Lfnx{p6s}(JSX0*U|%dsre=r>h9v{mLgDiPAp5>6-v$QSHjyx^`OS4C zHUo7giY0t5l|PZ@7myKA`~3M5$O2Fe;n-$Jh-nTsf&fI%xL<1F0?zrm7*Fv6ER+{7 zUbNoMa^NG#xBu<6QJmqX^XU04{4fFf5%@KeprN_7rv#N7`lCG6kh6lE&#@jbd*L9z zwDIcwA%_oXc7TgRc^#ys*?}vTotIe8j`$kr=~ZJnkeg#y;x=J$KV+nba*%f1>jvO< zB+3gLo=mX>DyKiZAPoMY6G&!5Lc?wERx&0EicirMKL*}bAOx9s?iJ5tY)}pHGvUz| zn{xj7^-Xe1MJdjG(F0fVzdBFOKv6_|PlzTDIeA)S)6p2W*FXCsR;*ly9$0^Bi?AR9 zhjj4fu=e}`TpzC3y7j-Tc;(|8Ae#N;2^9RL@4Mf@kQ6l{i&U^aunJ)xP_>33PH)Y;oWnt;ZidPB6Jg7EMWedowW$~q?2B@C)_cYcXjtMW)LXCt)l>#jYAhZ4` zf6QOu#2IdMR+WEk*rVrlscwH4qhQ^8+$mDVX&mGkp;5p??fQrY{Mxp&ipzvX!3Ck0 zJ~ES<;RGm}jarM7r1&lWWf*D6NHM(HI#iYIezkNCjg0TkipIp_2$U+y`yiQ`jJDxW zmbL7@vkX{qNH8;c8-(X!Mj7cm^Om!BtyNn&(!P*~10_JxQ8V*T3v#$XSu@ivVA&rU zDavTo@Aw3-eK-ztBnoWQWxH-FLuQfVk3&#WkXdC|X#IgVLOD<*Nnz^czEZac9Gk?p zh%mQA^WGn*0Sds>BaR^E+W;V(O08q0Ic<)W4hlSX?#!OY&HGE*?=VRTf17kRDw9*X zQ50JXwLkFjHdy4IIT`FPpx_3FVQpXWg59@_x{?KUZV_3v>IxQNHK+rW@^Dg-qZH8C zM%9yXJNt$Q+W1KzgUFodR24SB1LiWpGM`1T96(_CGTiM{0frYJlFtQOYx@w zOE}zpUmC9_m>9+(OOaMPU@3aNE0kY*vlD*|Y8#Irz~Rl_yQMhjiW6 z8~{%i4E+Kpztq*#lmJfmAzVKLx$W!|PsRls9fXj8bdZMLsLVbJ zO%H@u(X%GfnWGFI4u3@_3b*9<{$Hm_v)PmvLaaEr7GY7wm6P8bPN*LEMiWJ}kD+RT z>+<`aa@Dz=5O6^D+`l)A@4d0}YI~ssB?Vj|ILQU%A7=0%UyL(FgL3WK36no}_mw<; z%qvk=dr@9q{u+WxLEGIcn6sX0{XBgV;G__|I$MUy5ClYZth5P|VHG zXkE~<-w@8t1;9JVmEFqa5@c%Cz)(@Cv|4>kQ)kq?uOELJr$GTBIP?X=EaJ>Y3rr^y zx6y7&!98g`YKJBYn}bY1fc|kIjsgP4#XcQHb-fg&r#9k9luIk|66`QT2t?Q02Le|s znfo3x?YnP#cb$#e=8gr8?dyyL(iU@0p#Hy+GzpnrGAcRL1fy3zFs4{1zcJ=^3vJS0 zbJ0wD=rd>zR|pt$j@zROLC14QHh=Aom!I&wDbCKeZ&hC33c9GvM2>lnR6FAL!wC*Q z9DX3H%CKVeNt z1RM0Na7{OfJ|D#_l!2cQ&t7vpenme^=Pl+Tia2gR%;WW?_qv0FK>}$MPz;f>Wa`I< zJ=ZS=GcjhER;VtBiyJ@ba4g|-Nqs}Z2V9@PO;kzP1_-w#Y;82j(Xyt)Q2WCGOLjQ% zL1Cy^(VG20AYj-=OBZ9(?b3cnd}7~Hz6Jd2nh)*|=B%C`8$Y+s@rnKlex%DWyWLNu zlLSt{@#%rJ0v~_6n}-T=_(!b?=(qLqSv(OS!xh$!zMBsf)*zcY7{U+~u|vwLLJj37 ztDHTaJ?-q0?Xtam*=OmQ`Q3kCz)d^oNdf>9kZIO9>R))BELx3m3TQcpjQt*zm5IU1 zSYfrN0~tOV2s_9Dm zU*B^4MDi|S&%4&bYpWEQUW?ZrqCS35!Mtq!e7DgS?yz>0w+Y_geGatc`}S_U*Mh1C&76WvPNZ`P)9wWOw+Y72PdxMn zw#@B0G2g?jFJ^ndNp4+$lCx>|JKQ@YI|;h2dVoGJvP>jlSLel*c+376P&-onV3G`= zhsQ7zenqNx@S#iOj(}$#9uSg=0YnINSzT7NWR0BFRL|#hGuh1sQJ1fxibc^&@*AxK zn#Ngzo%LPi6r4D{=d{FM&M(z3b>u0p)9^|WCqElTOMVVC!p&--nw{rjFj$dpvA zXh}3GURGTf%|!0v@}>e(5PUpueG($`<0RP&&=N9alOR>XLb=vDl=5aR;APxvtfV^Q*CK@;>!N_QI7(?ewQvdAzt8o<>6F1E71i&-%<@nDlr8g?IVH$)bkzzkNmUozB5lmqo=LY3^pPIN_ z?CU$i$T2=~+QekF{QiuR%{e#G-22lN??&+OKW?rxUeiCY1NoaBN$8rTEGJL@xvJM0 zIexIxe~w`l&&w?qtN(R&+C_A$2MdYvK(h#bdol2)-Ck(0NsbFiwL-y%o@K=uq^xGz zz60|KjDtjBBZY@(Ibt#P2}ODC_&T|QaE`W&jOw(V%ggh}#lpVkV8p`aSJ>NxjLlQf~r#fz&S6zU1Dl0EsHq|3hgF>qL(uKR<7i( zLnR-zpDPUZyuBc7JOZ+=sY(2kljlXS~U3u54ZXQ*|o3}+r2SkWirE7^%L|0hdJ}10k!`9`6uP)%Y0=17JslpH`3>&9G3alX~ zn8{uAu81|V%9`cF^IMv#B>d};h>-uMR~IY2#NIs6B+0<=^?ne3V{zA4oq-DdK*fTY znIqhox%;a1=waRvJ05T^020I%6nIccYlBiA4A%y0fupw$s3vMyl8!_IaavzE;%S)Q z)giQcsO?&Q`xDV?$5l;r*`08iAjwKTKGsN(Uk!O#TtT%EtljiYKM}&zao4%;SdnQ( zk%p5%FSDVLU=}c%g(%9>E%nEjtn$CIs;g?f&7r#oW)gq=cs}iOTk7y2r*T<%nuMSUyO>mPqz*L37)tzGSpJtma5VBNMoS3 zNum%F+g=ms*T0@W(bHN2-rO) zD9JdiL&HeKrr{}dZ$XT9xwf5A`ux=97kCX;Yh18k^MCF~5V-=zi+fe~e{&UU&mD%($R(6u`#ejcnj8Pbls9XGdkTu%#Yu=lyz_G#4liLPEAYyk4DM18*}7#}~`Y&L3$( zIgMTu5dd@?wkNt8Ll6^qv8a}wu3s3?{csWgmBmPo(N6&h1g?QFx!77xDuX7^6u5|s z7t0&iC@JP7bix~pgMV#&1_p|ZCr8DdzNy;Y-dDCcOE;ZLwG7TaZnOEYncN|DWfbH2 z1Nw+Yyg)?iZffW(i5d=fR`wYM=TYx_=cbRVJ1__JaXPcHe&-j@3<;KNJO|a4uz3** zvCY6HpR-vx*FdOOfE9@lpc9X{lCEZJ2QHs(*$B6rN0Nfx-yyX@2B*IVq4dw?d;bD=E(8m>zDB-Mt>iDU~8H75nLJ>S^>>C0`asiIMIH}^A)}>`BVD{?hz8C)uvtd z9=JKls{<#=dyDz>5;MLPE7rvaRT3Fd@zL1XMa*;Bpdo~SmLjH*mO>54@bje|thAqV zJ>^;Q9#|q74?S#hkYrcw+egKTRwjP)iA7waUWtz8=(T7Wv(BV1P!PM-GTlXsez7d(TPR|)$xjWD{G^aUYz7pZS~#c0 zehIYSejs=e@^`p#12MbO7F86az?6dz&mt?5GQm%?_s{=i@R+FF#okr9*ep-dYI@ z-pF?(h#?>cK(WYy1xO|VT1OY^QIP=3ERAPrveoPC&Z^@!`7-qD0@#s+mO;)}qWQ1b zXZ!BEHf7v=7RO@58~8wP=T0)Y2mC0>9Rx*8 zXk4Pf|7X>Ll~uvaAjlU5joj{p zU-~+hLXXU{0%2=1ofXK50wzmRs{n6Uob|q613(-A6p2OrHT>a&ZbzB2ueIc8iBt=^ z9#WdiRWLP1M!IIdb$L_Ni;a;p(w?;xh^DQhBT+u!-LoURb2~W%aSEqG>~jYJ!nuA< z%cH?eqZJ^MHcY9pNA2}@?8Kqe_10w+IABQMSFWhEzfY;{^}-)1-E$4LjNb#y2&oK|-L=?4k^Av$&PFc-;bJfI+lejPe* zcEGV{(WC~W^A`V$#^q;_DQ|@kwLQ*keN>yu4~7lm=0GSKwp_X`ad{;x|B7Fx8*r*O zfFa*oV5`~63PtK!PT?BdVK{3cTg3fy=}MU&gU$8bt-83DrEu~Ur-Lc7UNaCLnEQGs z=9QCI2~c(O=M#r61T)!=b#VzRURd-I)6Wz^sbv>+Ej@;zFq}NRkU_})2?`lCxpM=X zNRt{#{2R-k4HAC^&b45J;{*&PhQRCGv;XQOK!lJ$Bj_Z^xMJrM5JU3ITMOZKtVQon zGIOB|(Ee1G1~)xFM9L7I0f5P!TITsn@yEDq?d{lF6Un_KXp+nb0xgwb*pn!4XNUR6 zb*Lu@4~rj({96*(PNoh|XjZ41ll6T6m?fEJf(L+UCM#6UWwTgd1PJ$?o2@}Z0@w>D zbOSUWKjY2T5}h)t&Fk+ZLhN2(P6_~KWD#ox<(aI2c=a*XbNTEd9MuH!B5_7}!$hY= zv~Wm#*_6Toj)p`Jh&UP&^|`T3O6S-U19t6Th zKD0`_=I*^X{T5N16?2TB#(#oQG*59A@g{0-F2ctrK6?zMdeL3I3luga0Z#;u$ihGd zf;S<3zp<$)Kfz0(IkAKL7r7vsaLNtN8WQ3XPluFLKbb%3^BIQ?`E|%i#U&C#J7H6?WQKu213vvA6$&|CNf7BGvW?c9NFe4 zP8!DUjdFyRgV#a}U@Z=yHzVc$MRT0YgF(bTZq=@pacd0XPRvgVOS_}eN9~K%x!mnQ zD>-6-w}Cmrrewhu02bHp_lI#?KPC-eD;aiDfVsK|L=e%b&dwJRLMS!to5Bpf?f*m&tqBIFZ(^gI+`w9NKktU?Z7fD; z8k9D=5^c^@6_Cnn(&$uZku@8%x=%3{F z-RHnHLKGOF!C(O;D~X2}#eHV+IZ-%s$?*dnN4#75hK&ohJYs$olSCeplr8rw~B25iLHXMWQ!o1_c>~=)!awDj$eo^qyRS4FT07)R0f=HMV zDirR*$-**~hKSSaIXC1CrY#{dZ58MTuL_!Br0ZU0Yt@Sn@86Tj=Oi}jThC|Ac1I<9 zcc#P-T0F4T7Z41A9U3<@lNFS!dTKN#Rm|m>kRUK@0+ADP-`%3s9(+R4F#D`@B!rXV=V+SzI#w(7nf@_#_sOJ0oPRFrQWM>}#uK}@)uXW0No9BM7Zz`?%Z@njbcJV;W>WcKzP zi#_R@9XB@1A?Jz-QHFRxkjooO4Db3sc?cLSe#Er|FLJ;?<}jg3nZJ7I{bMmsW;l=* zke2}Alt%u+AlKE_(O*}C7}7IIyG&O=j_6MY18w90kqEh5ks($SI5rlB(uhz2=+7F) zDQA8N*~yPX0wXdAf^jj!*-K=yUwkjs+mp6~%!tSOA!)3*5p>sl+1~YxGuF!J3`$Uv zPDzsVG6QSLnfd#tJ7g1yE&Xpmso@#w9y=0pc3$o8gLWd~0c>G^I>^!-^EavR%Gx5m zn1pc+b3zP1W4-iR#u!wU>kbTQeM}^WQ^GD*At0)lWN|`!@#oKAQ#Rss< zA;uM>qU%b+1+x{Ut-y_qayV^C)eI)?$aeZ|Nc1s_3ETU_`684oVfZE^gNmd*&02bLzEpBVP*+>o>4onB!WJK3ME;d}+Qs;M@rQe)WlIm@0k~TE@303u}wNl$q z%;Oy1fq7SD8>b-kFjnaZ8SW$FzGzEBv?0OAmVWxHH>ah35cj~yyGm8GiYTRDz)qKN zJL-7^@rCbLbCFI8XvkR)S6ru9{uu^wPtsxF;34iW6;C4SxqoA;)IBj5h_HUn&Ss}Y zozgjsh%V4#|0q$ftv#sGLqa-ng5Oew8sIFs5Xf?uwEhVRHDub6S=9A>p$hOEMcg08 zSG-<=$gU*N7tPD6+c)4L7GQ=BiJGOkwp9Xu%y|~^5j&A6SoK!d0ziNH_9OVNGT_o= zN;3Ko0&u_%5>xSqtY(`kHKdu55yp6JY6tF8PIVOigo7nca{!E4$2p^)pgA`nzVu5a za3fYUA~FXXuMXc1B#-NDNIjZDqJs*aYm8lkylz#m@&1@b6G=BET; zHylcV$S#Hm_bc>9#R<9sB+U%&SLmqVKEoA!P04xjvc9AvXog5Q=Pt(e+`F&y5A2sX zc4ND@*K&*8?_4XEEsL*O`*|2&2TJ(o^&d}-ckW#m;tY_9$OEXgL}I-1J3TbC1}bvm z6(Z9hvHWyV#SR{d0p4x|%Pe-c0~F6>jJ=BIND}V{t2aTl5CUSJ8`H+)??h1`0uVm@ zPvT3;z5IvUZd@dfDj}pEwb?&8`8P$K9__qBtR&b@)|#mxlkI>g|8CKE2I2lT11HI8 zMHpWrSet!+O|ha$*TKDq#wn_HDmcjMF+9tN&<6jkj05}xE4r1z$bG9k=IAa zmj6fj1J|sznXMw)O_+!@&=*3(3}snAWVBeUE>9&@u@wNyJ~s}HUk4;+`OdsgpFUmx zw9Dz}huSAk*6uIf=^2Zt4F~XAwF-8#&B=JXmgboWsQ> z2GF@0i^AZ9ab1Ilm`M@$Qf3;Dhh(sm8R;)SEEs1Lxpozi4*{uRFu;!_a5WxQ^Y|fq zvBmx>EuqLIN=sBI#g%*Tz?N`uyf|#63`c{hqJ?>Pi;5 z$|1WPD&e%3o{^sjT5QH{C5cuD3l*)<%I*8o^&hBk5#I&KSk&$7-w0?wy@U#mG!R6> zM&|$q(STFd?2AWNj>Y=)+4x;dBC!19mq?0>i|dz$(eu3KN~fUAA;uTz5uipU67}Yn zrU=>jzeyY+Zt1XW_AOR(#l~Pl#=_3PV6p zk(vDpPfO7pASNY7|6UYJ7`{!ecfbM=6F%#D&re~ZP1Z9E(lV^3 zfb?{y5P{S`Y-HJDkpgX3e8y$9`>nz-S`+YlWDtk-ypOiCJXt*{vb#tIz0^h%>9D(s z|Ky^5#c7R&w+!XNzk_9Jg%i*mJo{Qr>Of2^WkH(``HGQto|*ian|4AZHyc|Iv#<=> z07+pjUsNgx?Nrg(y?ZyItBC9b>$e}W6Pa~-S&K9WupfxxN_i`ZAtEDt5j$}CvIsaW z96nSKtlH~__HIIF$I?U@H;8+DN8047NslUMSiB-M7}YrU@8vl{I)&$#ilPxKl+fMi z66Qmf#H@{6Kxg9N*4V3Lm=S(xld5=h7wQF)JC33PxEXlQp&sej_b?aSdR_r755irD z8Kbz&0`1+L^BR{^_izoutb^ioQ$yDgA+X-bUC8^q->4QaUN-1Ew)>6jZ-{Er6pG@ZIr}Zb9I|c!|^<(jSCcbt2asIyDq3kuTFHIxGd*h<%dGY`~(C}In@~{jhMO`T>G3T;mV!& zfWjd;bOk?&(i;|8w-PzjUzMlVGxy6_c5PlDJJw#bg@v(;i;WSUwx!`Wel3@?4C?|W zQsP0fUMv{fa*PxhjaS8?!h_TFU+?@USLyPsSBv3;+>>>>O{8Gr`(oR^uUSs(7ckb1 zES~8}%1(}g1*I1Q7hrX)g+hy9lED00)<}RBUr*i@u4F3Ws7WRTd~lc9R-3Q~$IDvm zme3r4FPuawLI1D$STGllOOnhmm@FnE#VfXGB^x>2GikFuRjy`xN_BfyY>=#T+A^Y}ZbIycYNMpYY%ZU_6o$K4rYR@f?U$nI+du*PuDu@gGUA z(}T~tlxRw)#-rnzrD?vKo0%*ZiQW4p2FxG584oW&ou4u#RfyQChJKnPGvfS)kAU2Z zkPkimo-pIA?E-}ZV9&;KpS6;b4oK+1eRps%>(9zSdBXntC4?qfAVe^#R`$89)rt-b^+%hx%Io6f0Fnj(lw**Z4rAP zO}XJ8Th4QYJ<51}k#ij-H!?Zj!ySVKU>8!u9TNa9D;bz3T*3FPjVT~miOvL13`W{- zM8^*Yh|2z1f2!sH)})1%(NFAm1`kW-ySR7qox?a1r&b~Tc`Maam{kng6FMk3!WR}CLRnYg6;P>L?8CXqJjSZ znXek#dhHB^NJJ5eKAU6FB7<)X$%2XT_K6cteT)SKeTxk%1>o-{I+^jF(j}11&``Ag z9fT$1g`MR0@K+A|oZceLNx~uomJ=NCjSC5)DcT5*h$?Dw>_EC;NO* z_&rbxfK(M~5B-M4YXe@tc09M=Yj%6UYvDhaWj1D`we&4qm|K4%fnBb$?P(F^V4BK2 z78`^a;8jykTr~$XjIO-y*XouS6En86Un!?4{F*Z{m%bm|EJ%5B@DUfBJnPrr-IaM3 zIFb<6fMUPm3}RBx|^0@4u2 zF58loT+~{qe##<0>lMhaFY>)<(zU3j^<3kVML?{%VCBM28}BVQVYaxzh^&tQ03Rl@ zDUYaAu*reK$)WLimBs;capPnswg4FxbrC?QM(*7!3%R0)IEqsy&M)X^t}e%DWf2hv zSPIS$>=l@Vc!tbwfieI$DJe2QpCnIue}b)mO#FsMS~i~NgIMS3Q@fqkE9r&#&&3@k z)gR`jh(fxG@(G3JcBIWR0a4694%JC2UNRwNQG;Co+V=qpD9(nyELEv(NJJq-Bl<-& zO$7xS2%jQp1oCZ$=fd<>V-iz(?FN_i)uV^E`V6;(8%R)Y-aA$AC;8BhsUuS{bBV<{ z{SX2FiY)#ckf{YLZVV0%wu8}!k5;QVlQBlW6Mdm8-j%NgxM!WqEmx;@#tjsVzjOe(Onw;O> z^oR&D6Nu0hJiL$#4)Ujm$DuxSKG(}nIUuaFZeq@ui+Osj`}`Jk)AeAa_JY+*XYVE; zG&HGN)JR*LwVm|7i6dss?}Yr18uWY=g+K-{4wCg*SXoIz3#OcxSW`-&7etmS=!8qq zSULdp1xTk8x0AJqlN0B(cS%q!nM;7$#a;U4y?w|LL^?&0=QAIQ`4*FUv8mfF=hO2i zCx&isk&DxuUScu2EMor3DjsE32`MS5S6;ujPP-gB6qlD}v$DRN)hkU?KuJJYSg1l# zxfJCQ&`SQ@y1+M0gTuIoO33|>yqjyCU7AzBx6+Op$uFdA;Q9`oPLpwZ(e|9j63@6}D){mg5aWe#@9BFVvgYQ9agBbs~m&^wLe0 zH^(J@M0D4u-z!B#3~*%rov8|78jdUDjlissbFCySB9c?+^k;J+%`}Q$8>*L`agu}H z=ucm{bnk%a7}EfJ2|Nc&VWaPf*U)Lky{_j*_41<#^ z72pi^gtcVq>(|KrRl)T0uiMpxsnk(D+RgU!iGB&_sYnVT$)x-~J!U~B`vQKAijQBm zFt~POPZi6ZGE;qNDsQAlQrzZHdgJBJAHHsLfyktL1+e22;3zVR`AZ+}X5PAj<RH``dTd|Z&N4H&UO*PC}dus9Uco8VjFG9FF zjL%fj3Yff)-m`WxzaPZRLdp2!?rWCurX}yN$vkuNqwAN{hisUywgjjFXA9On;ADWO z&(z3n1yn`^=znXhCJ5{~%{zO)T#ffxN#X5!R9h82-mJD^LuAg^ltyZc&`GowUxaum zQyM<^1hSm=*xufh*mozVPd3W;0B4d)`-cVJGRK2$t2X$FKsQ2&v;PlS-yP2N`?vie zDrwk7$_z;=qexlVWs})3DwIS>A);g@GZ7h)5hal*qfka!k(DT9mXST5^ZMTRaXim) zJjZeW@w@vLpU?Y!U9WMz&ewSo5ZQvLK>;g5qgRPt;}>sWg|>xwKO)|J!U%aBs%ZN+ z@(FsK^Z9^YAgg(HvYw@x^2|3QyZhMbm0e}S4_AeMaklXnh9gjR zO+l#ms>K`F7&>~VVrG6n@51)qS>U@XVN#Wf9cvxjmiD$b9dsHtz$=LSUG{5D-muVw z1TL4MraQolHGs#X7hKN)5H8=Q(T8a8ja|AlnC$msej_6-qpl#Ylm23Rb2&;G=-!Ec zwFhAYwgJKD9EX6Tk;8u3uNSyd9&mdI*aF%_>#d=s^?T+Eo~q`<{kMQrDlq3Ka}zdTw6W<_C&Hd7&QBMN~X?YzRGh^HMY?`~xyjmB#I9L3qJwg01_L zAtYniFJ~DfL{oWVw55ro_Y`~0FZW3DdoeWf@^UCBE!fFDTELFQmh4k+PYx~T*%=!= zH#d2d)+(fT%R3pOtjwaK1~2Rk@7)u57LFDfxK%z$0oLcw<6<36h8B1O2Ftr4#P{vR z8Er`Q=*_uxgnFfXtgkAue$3o>?&wi52?;D_r(7x)V)skJOg7`4XH71$^xDzNAPIX3WR3xT|UoWTMf_=>I)8$ zD>$%!Kld&9L>+U#Oh%?gY`1HSQjT4=20k38YjNR%DkutMPe~US1~4%Zhs+#*DbYSg z&mtrb^^_#sdwq;eBwSCk@2=P^?7^Sx!6D~f2kk;?JY1eH3t(0^pwadBm+Ix_17ny~ z)chg#uTNm$os1qG8pcyzbK?r4H+zvGoKY-YRyobj6c!Po|GFefDJyJun3|AA`5I%f z5~fC3Uc0oYR|9bvZkl4UGrNkpCWbm& z5U(&`^X)u&GD)hdvVN@K#rJ{wM4n^v%0WI;(+agYX}px#}e@{QFrzkT*qc=2eA%atn)9qw{ZQn8gz zU!kt4y zWtcLIn}MQVkuSI4^=qQwkAWU<^i8otRX6+3a4&*pn~09gY2Ywq7P`m8!-^T?pPBP7 zelD4(5YETtQ!u!t*r*KX*CtcVKjQvJwd+(wY1Y`9QEvsXD+;@xYOjjZ>VAZQa*FKy zyX#q-9xw3VgYQK8u3Rof6#K6kBP5ruu6Q$O^}GIkICRt+siyB6qVrjxbZrpC<=nC3 z)w^3tx3S36gH#$vt)xU2NGUxyXWO{8&AGcfI6!%P6gBzc{<*oOmEz-Db*}8UnRf~e zpnF?avw?-V{PJ7N$}#)wEcuadw_N{Fr{3gQow$_|SABFdq=aX-gXW5E`9Cg3g6t0L zMXO-p%scL=wbE^9eEtG(m-FgX?>AJh#6cYwH$wjgKst=~(nMrzA+`TJv^3^H|EhrS z2DE*ZfYN$E;dp8Mxob7+@5@`a6hbxyW%VT-zFUYPCkA9qdF7DcAVLBo)~xScOlEeP zK3KlIV{9?7O18MNsY!3(T=%J<+}1S>1N)*phaK)buellWV9`@yM|3f7w?|Cf1uLua zY%_@Ke=M1AKZTezx^>^T%%wAZ)bq8$+r!lOqt*X_0)a)36C5$;?&$d`<6X%s*|Y@a zzlXm79j_16=rFMbpYo$5HjWrTOe_OZMo7w+Jps)YT0NZ&g$VuC5xuQZ^qV)=O|E^g z$0)?iiwO97VyC2VIzpdL?XvJj3S5)IU2;6;Z_0UZ74Vgj&&m!F>oi&l}_O{#2EdVxUMMR_4a_SF?&$C9D?{>GhtNBT`@0>XxmqJM^BZ^BN=``R4BB^lSc6*IrGKHT7CIT96Xu0|Hzkh&^Dm6~CFz^%NsQncurFUoK_NH^d~Vc7{~Ci=9xp zUzCB^^`eZxt2MX%n5ag(x#XBy(kI;KS+fAt=3Z25Ihm=~KimEMIs0SYur|fLLyZ7; zpLc;l{1mx10_wVWyJ_3^$LuiI&;J5@fkhb?o%my!%?0RwNV&(rxW^09|4`}3gYets z?Gy<(V-z|+DH2*0VNSJ`U-5bk$qj#ExAV`HjYJ(t?>(V)n!P#zc>0;5^ADx|Mmy1Q1;dL?H#M0Sp*nV;Gk#?kGcPni>^SPBT z(L){?^hMaB3pEz`R#Yc=+{ensMh#kT-xmO2eZ@u22#wJ9TVP|fRa%MJRrQT^9?P0n zy=oVZcUYj&pI_ZAg!n1xaeRoW#3&AuYZ#`3ymL$RM*Y8^gE?_ z=uqXaZn_tGdu)X>a^qVhtsDOaJ8^=oO$14lG4)ACh>d_r7V)nDn3ucp0{kpb>1hCdqFlMtgLLP3m-(QMLi!hqI&(>B>a>$?lBizT_atVYSDhDT2$%8F-&FA1&|jjq=JFuALo?_#lZRQ%XAA>qI~ z*I%;gvb=qpWA@@t{$fX0P5zpvepO+uY+{ zolkhxdfNR3ZOR{qo0mGFWb|s7)4^ekf8?HW=fdjzPL#NQ7*GB;Bi$-$@JGA0+rx8k z^@3$W7s@L#-KEF_AcnbjKmUkc%agwW;C*0Rn@|%78QbT>#-qoF1~}J(A~4soeSNqa z)TEN9!F(~Bo<-m`@cOjUpdZ+-y@jpRPt@6Ed16g<{C58UUDH=`4!XK!a}zaJo%$CX z|Fk@lTPbng{eFR#B0$H<7k~kV70$90WZeN%u?(=IqFN*WovQ}y6hp7Y`T1SOF9eq2 z%zA;>5G4sPVlX`V;Wo_`WFTy~Z12BtXbt7)h}_GpUFt(}SY-o4wkcx;h1EvbbGEEv zp`8XgK~gRPcX)<(Qcir$`K$lrk6_9o>Z@nrXI8%d?X7)pm0onH@zr1EFNdaHCosru-)mtJu&{jd*qfF05!n0u|&R}%Zq^C!rtY$;iqpejB8Pg5v;eqHjvk|fbgWpZAFSYFH`MBxqr_DVd zXt`B4_fPn)oA9!r5*IIPVp8LO<)p>WS?_@)WDEgOXs7#w5ek0CTD%FP9ruHS4IYGv z3xeasvVk^)OD=?wPle1&LAcdyFAo5BL6)LZ#D=dH1QBK`Z;e$seORT(9d&2(wiuS< zqg<7dx&7&HgYOFSaV{I71-Pkv0L9DD1=DbL1bS+9KnyA_KkBP%#H_0l1LZFJ7p?R5 zaCLQKT}&|e<|)zi{4eM}gs)DK>nJ`UP!3xAZ0EFJmOE=kmiul>fs(bjb=M=n`WR!O zDor0gg0A{fN8S)TKXqKjo(?#auzGK#;}mDJtbue`kP^wRpHY-iN+5_tQT-i4}ap@O-C z?w{G|X~RD_pvw;DAc%56w;c-36=1!wzgsDuO7}7o*m8*8<%Ds-PQau7UxRlUoM=14rAQ1ZFYUDdAe z3VC1wN0ug-5G)I|s_pl*f;5UpXR!F%LGVgjf%asX`&;1#q1^w@rY`}Y%| zsg7*)j~)sBHrL=h9<#AW)=mzfb&DG4uiuh)aouS9nu@x; zk_Xp@a8j8Ttj)@fdQ@=e%B1x>7iReYCF?x^lUC*jxQKuzY7wx)Axfx#d`X0GU?HOD z@*Dy^sL9p>)o5#LBeH{1*q6&qIIagR#2sX96ce!C&tGdJcQX?SMq~#*@JZLc@Y)iy zQSa#B8H&z^fD7G{EXy*|(#rx{$K5+uT_&Cj<%c-m8pe1qHi-mtY?8KZkOGeVjl25aX%g)eTHujU(axl*1z# zfAf4qUAXAD#hLCmJfXLya8R{{*GxZ^bYA}9u=ea$?}vRs4@E|)-l=}LIHDB(tr*iy zXdYWQIBdcBfXpY{AP)X0wOWPio8Bg$z3b3w|7NA^ia0V-ud>x%&b6b#YjM_UHp|4Z z)ii~giNZ_?R%=tI(&|>cDqL`EF;+(OnM+u~UbFaCjv^`#?Y9~kF zD>_buEJZ|SJzd^%rRbtVR1G`IoNW%6`g6df+IKSfZ-i3o*z#%0>s{9$xQ5}64ksnO z2`_Whoz)0$I;u{@c73>E+pEYx6M9=Q$@^C;ZQ-ga0}ZtJ@kejic2n2>8(`jY^x3)F zGS_-II0Dym|9HJ`cx7G3rA4xZgQAu6378UdKqX80$B*I(5hKwm$>75en8?4FNh_Ic zc`OkX2j& zGEx6TUI`?vo{9Lelrd;JyH8!?;fk}ihZnQpFUrSxG@$~WE39x7xS6e zWQPj~+HLo1uDwimFXv0Omjl3wahhI~6(49fp zC*uXv1<;lv&JuPUb>N@|3rQ+Oy022-Ts%(D=B&%;Ws9cHp<;*(7faEDXd699#?9dd zenHQtyV=U9DTk8Wmyc80sH!&i*fR|T4xXNEr`ot?KW$CH+vmFS?5uq!g`1qNCiZOk^f!ZneXXkYM z9%@SLPV*1!%kvB;gK`Y(2tAG{?BXtvXhx>m2o^1cl2pyqSGHyJW*=M|N?$hCUb3=r zqtiWQyO%8Thjz5`P;zL-8RQ?Vj=?4mHXcV9*xBhccdnwlWjbNZpUl1m1KbZL4f)lV zDbxB%I~k|_Z|lu!Cw1Nrrm4v=qIWjF>;HR-CWofzkGTd_-z}$cMRT*H9T0u>0l550 zo#DYYv6ziG4V3^t4C%G6t+7d$VKm&PAl-G)OSpMDZDQt+8S?5{yqOPBMF<7W^}nax zS)lFQGkr92VZHC)bx{u}b7r4hwuxoDjjb#j+>p4_85$;Ki{lofW<@OT-`AXbq8!N5 zD0RvmlYh9AWUQfEJ+XlT0n)=XLS9zMx)xGUxacjbiyz05ib}(&&S_K=g@*^y7k?g0 zZk*41&*`sn2NNTI!s^il6mMPscn9*X5|%%R1qM<10=Gfa>7Xi`(AJ5Oru0zx_Ouh- zKV8Cq-=8t2lwA|*vc8b?h%t+nqSD^^EI1GrILVlPrDGTd9ljSgKQIctN+`hYI+Ucq zAKjHFwrf=Tf{3?ck&tnce767k(F2DLeO^!JwH_$Bl-J4;Y%SkG@%0NKJhZkS^~1U+ zPjt@+D{su}oVoLGn{{yDhr#l@jn8!XD8x4uSe zyQh$0aIs$_QNnm;4TEQGM;aJ)uxC(9etc7bfynJ*?FKX;wU!wx=F*l-qb=X_=x#oJ zdN_bZVr|V>pjr)g00?|U+5>|NC6LOngy4%t3hp8@S_kbkjn|*!UT4oorL(h4fj`c6 z`M!czt<1)|SHh>$i|@$j32z z|1O1T*8( zX?R_{N@;@_Wq6-@_{ruU$y&EkT56*uYGWdh>ykjQ$kc+3AO4Rbap=$mfWDA)GB^#` z9kq4FY^V|;561S_D33(%GqgXso&I39`eThQvw1$^Zqb=%`_D{9%jVVV*CDg+^xmi> z)65!^^V;4?*U8AFc6;2aaR^YW8K0dU!0{ja{ab|sM*?xE64zia$0j?3)!?;}z3A^3 zs^`w=Da{{IN)O(a8<`@l4~rviliPiN5^7f9Lk5p2W)HdzKA}AaG7M@!8P5gFH7_?e zS&0|wtAf~*lShqNV=Z>jrokKhb0!(V-91OD%}6a6KoWwr_t0KKBvqU_W{C#6@plZ}^=Uv2s0?a|w>@QJ!jyyOJ#? z=wGP4emc4C$z?(Dnbba|et%_;u0^kvc~!|9nM1FgQk!NOIXG(2U5jH+oTjXFWg!T| zm$PB3X%Fik9^hNIaa$Qa-{2H`s?i7a5CPj-F0PF(hgqrB^~1Z=)-DC$IZ zr?$J4a;xB0;#LN>&~}zDbumx2l~Kygr>a3C-x3 zJw~G7=iUdc*sfY&z0dFt3rounSd};cOxEcB`29X4$IqCn-#&W1(r8}R(9?ins+&BR13_UNFD9?j}cHd@p8N6QoW-!C9 z{EL@^jjl)AX+zYHyA_Ao4;qBH{^gE&cnT7K5lX5iOr6+57i<~t)Y%|RO&7-k4sDoIek3R{(WC*YT((xxPz1PA=0w- zCSiP-yH17XX7@+$4}djK*x~q(SPtoRtG}+1s`YRG#4TDuVK2V4-5e|(@<}?RGQeh` z^f@v1y&@uQuP$gq%4fCUD(+8gmaBu6)iKI<>?pkxqtTxi-KX6D_9#!6nclp;v1)&T zqLMg-W!^xf6255Rl)=HlDy-a2V3v9#Vs~tfthv4LqI19|0hXj(hiwen(!3f<<%*kl z)lc&khFN!7eUh4J+4DD9to?xiR}=t0oA2)lYa#g@u!l$hhiTBt*u_ML8F4*$I4{9d zjMPY#IB>uM<>L^_WR3|&T`uWrL4y+Kle#hH4&qVzUCk~HT8|FiqaZBl#aGRx<)VAK zC$rTg*Sax%$6Uk_HK(7^`!40UA8Osra^$$!i7zAd@iJ+zKk>Ta^5p^FMgR_pyXXhgr`yBB)U97&xg1=sG=$^5H)8433T1Uf2Gjl7;GT06y#y8Z7(8mOKt2{LH zwx3<3eu@~N50PHW1?TCL3QGF(A>Ah?QKCyP{XF(Jang)Cb|DtFy~l7)ARiQmqmS>E zW%ObvI!B8uUu9VhX8yQ_nQQi&w%;?Dq1tp@uUuI|M4|^1dzvyV8toccAk_9Lro5aS zowv+{!YOgB*`v^u5%pw4_qq z2wU9BPc|=NS{-4ija?=>Z(O8ra~;UN3~C;GTk0QyT8D=dEh4S_>jJp(EHt-3o@*!& z;x)K=90%=~ixW)10StIe=K z1>udR3@P6U=*iOfPu~({=0=`mizF%xERBj&ns-buuos$xdv;Y|o;vuCH&TRt?_uB@ z5SIK1=M+8Oum%w0@KFi;)DG5fl*}7E4s#fim3qu4JMQ2mkF^|K##a~u0>RZ>pk~ZR zvos3fG}CxjE301XFJ05KvqsrJg>WKr4{w7g>dCij@^I(w)oxXPh}w;jf`!)?4!SEg z_|2F(R)eahgQ-2xW^|tYs5Zh4PorCHIoNg;1T&HQ%h<;^JjZ|Vj$Yq7OmYd877ID* z^3t@~Anm@xgv=&xnaAJnPAt(BZz*J;xrI2Tc~TlTT2m}p8FI*PP&Tos9>Y!)E%M=W+w&R4H8 zmxj@CN7r75xH+*Y#oj!Q2`+IjUf8ysqN4VzUl}&hOAh@gUUb-()91Dq9jlF_CN62V!l;d=#0%`s159Ry<@0v>^c zMITzE>AhO9WQ_$`O%x&VQ!x9J4VL2z9(*-p5$nN zWJ8IQunm_Ii&eDba{_Zbz+Qw^7kwbc#F+QV<4|3^Sc~j8$j|T|ZIBJZJ-k;gtntQ%oa&RqB=`rXOcE~hCD z=?e{1l)#+8-iUN6jKer!@r%{a=xE$%J}aGO_7Zb3+lD(n_Ks#6V6@~?1)#u`P) z)l2Bn9Xo9Cd%~llWO@F3@~FF4?OCQ;cbj6y@dO@RD2cgUgC+S#)3OF|bejvLh92WL z=77v3tZjkOj2n2+@tYK@`<*s(NcdCQ5Z(=iPG#< z>^_RX#)E1V zVXA{dT=e#>;I`Kw=Qn1~NMaCoZ$z!?zh{oaZWzx3>O5#Us|C6(7&tV%e}43?1MqxD9C#6H&)#($TBFb2%efrla0}POCirzHn#tA3ew?YPI8w*PXnvX^>04Re!J!Oc) zlh{H$9KEMl4A=;g0Y+v+W-PucNjgvth(U-YZziuxh-JfTaNba)R0qa9jx6Babvg)t zm63v`t{OE05?3x}@ue=2AjQ{s%uhC=BE=p{)0@X~bO=RY6X368KCKL}iAKv<_vp}l zgy3Bi>{&&^zeX*}#SL>vE3}X{78dWZy|m=&f%k*okLULrU&YqewwmO8b8X8Xfm46; zi4-i9rjLWCNSz3N+19Q+rB?M%TC=mNU*D7WGv96YZ~X8W-WQ|%yXr+$ti~C7yEw2t05F`R z^VQd#$F!s3Im?sGu)7-{mB+#6#TWkm){hb z!J}6|mS+>vkr&iG$kdCPfvB6^yLZp_{P~XruR{&Z9~EDMN1g*(cVxA-gqWBmSg~&~ zV_+HhHK*_I@1F=xFLwRskwQF!taPx{_zGwW{w|85)VdM<*8iUMi>1Y}QW|KwwywI0 z;0c3*#Y+j{kkl|AU8P6-5~P4*YKmL7-O|z$9M{v>jXRaEWs9if0Rnzz%}Z?QnPU8a z^29NC!g!~whZ^h@(bXyZQ7F1i-ssMEY{Z`(A^j0NozYp79^9_k9~2;=E}yRoy@gGVuh%_Ge_^+q}ZXd=USh>Cz1H#Xd*a0w0Tf)Vzv zVz0{sr02}q*l+7MY_P=S1?%Hlkb=W;M~$ z!h@zx1TiiezSGzWD6WcQBO)>47%pLnb6CW{%Je4+wa=kEYfw(c+nwgbx=hEEsgjCH zF1EY!UcOYnBK!e|$=1%U1|zA4?rynCm#61Yx*S8&J&8h;(^iuQobhugqEKOK;qAS) zYteAv`3OkC@cQnxs2|6Ceu7;}dOR?=ztto=;#JyKUu0xr`T!bO11KyM8wZDag!6wu z;@0jhQ0q{U5cx&)m^iM9SQZe;y1-x{AD6KDK?U)Pi5s5k=A}2|(QBlDa)u|;h9n@R zYXVc6H^6ow1{;KYj;$hy@JIrm7SHUct+|i-BW1nFh!nl>vRQVyxto{SKzE0wn*{? z?jDZ+O*XnZaGRy_R@L07tn%2W{q)uu0v!YyE=>s0NF>(){IhHv0&$f zi)gu>QQZZAz%dA4)gj0YnFS+w=iDMM6^&Hpy}tq~$lUnKbr|Aielvkvov7CBoyc1_ z>n}kO2lmHHISCnZT-KG|G)iSIBr&LaP;^i4)yTvq&3k}^Oq5UewqMX$+k$DwdhV8| z6B*)P;1U^0?50qm;~MEHi+VyVEvnD?K-gR%`0&8HPN0||@EV4X@9?-vDtR+DZcYx_ zdbue@ohDRRfz#6Q+O-Rqz364jYGQ4z7xN&4Zd0%vP*p_XDvGDird1`}u`#ys=iy-E zhc~qJ;lqcY4tqGeKws|Q>dK-+Y)nie$U`_EEA~akaB)C8{lux-%*5m+zTgo=Pp(xb zPVw^_sji^dTVPX8gOo}DcsvpZ4}R+`N~%z^FZVHUuyAsA&a)dnulTR=EB#CQ@5my( zr+P#uWdPlN2h$5}gEqz4)%ABp0P`k0&pJF48xWeeY`L%GdlDDGj{>#lHiO8z@s0F& zwuoZbJ8~2&{%O5`8a8q=!e%mrF6ogMD(QaT#jE|3h@973#2#`fipeBi+ z7(~FLlI5xJW@WI`lk+#&L2>54h|1% zU`fFDOK;K^e4%}jnOK}vZm@+QY|->wrC*<61zN70B7M8eb-y;MKfCUc})Egn0cAjHRd!h z96KnYcFs8n`}Pf0RYHbcmBSEUC`VyKGAT_NK=(-;?`8X)>E@yX$QSK!tio&4v02A)79UZYm87{~o zMZ5eLKo|USW+=BOZSZKqhk|RQ`9=?3%bfpSQxRU1Ofr7vE((gz?`O}*qj*O&K5A=W zp%8Q8BQoG8ndRNM1*G-H;wYUrViD?A!58L*lb=pREll>)!+g93$K&aZaN$#M+&hlU zfZlIcOK!E`R!sntJ z-C=QYbo_~DHiwwv8N{{^j(?DF$~A5814HT<2;8LZ#MM{dMb{hN;dckY1!s_8k{#{s z8PrLT!a5P`Ef6jMNMVyYy&r9chcxU_e0{ic&`<{y#Y}6$4_a7w9fhnB;IRg`iW5PC z&D#&2h)S$SkV8u;mM&dh^b4=p8LcTsK~2u03}^^IpkbiAbsnL!jP8VJ(N$1x2Uj!XX|qSBBM}Ox_3JQUu@?N(>H6 zO%3T2Xd5ut5nyu31Aez}H{dfMlHS;K>yfG79pEY#zQih{`F>kUsLhjyvdsZ zi}Bc2=J=ljbSxn*{se5Z_ZO}{sO=|M|HYO}Ws38aD?L~_n*+D5yY5~{$Zs%_+Q4o^ z(9*{hfZ7-=<&=5kf)}7Mq^vUd2a^B>&}S6lXk(B* zbZ89kL%D_zcNVjG0y`_!L&VM+85Kywvsv@KMG_*U>VXghnbIH$g425GTNXPojI#}E zll|2!$q7!8L?Ebp`vp@X0J4t-Waati0VA&btCvG!d8))qLO>HyF@i|n{Jk?ED zgEU@6D+WDVdFr!Zo;Dfe5)EZ>Eb@IuN67W_-ibh%?x78jMa^T-uaAa+4dHKUZ>%Yf z!DD=lsmVzVr@#lOIUyxLMk1K;J`KN3_k_Njcsg>zwiGr;7z4n0&eOvq{L)umURx@J zq0l@V4{4(LBDAgkW_Y{*^4~;@h>zsNF|0}{=`5y6*VFvIR-1G6906y z0^4-%`90?RQeS@`MGGmoaSai6!|(90Bh!K~78@Je1d?oa&qg3HPZ5_fIGsb2We~dm zI%>2V?(ScknK=FlHBUZ= zvF2?G*ho_bp*lzPERCTPKaL%wshOFlfLrj-@e+ZVUwc}ek%gVi|GxGEeC_$<5y**B z5#Yr(H)0vf>}25h`t@tH(&)?v2nAv33edn?I3dK6gw7kSNIztfnwD(RaiVY{F~u!} z)v0F?^FD;;WCP)Is0yapT9mhMi$%O|)u!_)!>!G5S%EAoDRgmRCqVc;{6O?NltDv% zxM5fyzrePug>K810hCn6U<4X&P5>s8Mz` zX*j}{E>nmDWkV0}f2Ma_C^JyLy+ntD4uyw8`X2%}yo&#U3Y^3RgcLi?0~*;|T!C35 z*=bWofd|CKc5`w0k-LIRLFbLhp!THs9YqB%FRvSJZVh;)sDCwS>AafbSBb-{Pafpa7plZfbKN&&Yg82j^>~{!@I}#1WI`nbB37TvV;E%>Bm4V zh$hW1tS00Us;oNZM$hGiD4dcsC0^ZU<&W6*8X-1^t*eP zpdy*KuNM8CB843w2#_*7dlgR3)QgR>KnWg_0WRn{{#AA4uQPC`bOzFFYn9$0=FOnx2S6! z`j%JFsIc}}$}1yJAE^ybpMm7AN&r**b|Qf5W6_jbqZKt|G{R50&~UZUYZnlHv`3$# z_jNny8ud99*0?AB9dvcNzBsct2z!BmW_;rxM{#a!&zZY^O3@>J7WHHU+~g>5Berjm z1g6PLaUE_}Py1JFRj!I2_tV8CWU&xnWEgW^j};%5+y!zJY2L)4EF6t|v!S%ks19b}P>6~i^yqI>jv#d~I4QIW zXOSG=09g0c+P|$9DFb6vHEnI}7Mpewd|e7{U>#uAUT?(YRfcG7YzG~v`gxKim>#}gO|X> zRsu+O<`oRT+Jeo|vc z0BSq>P_oO#^wLpwlmb{XXeNzDu9IA7W-bq#NO>3aTCV^PCWs30KgB4a!Rm!@xMh;D;V>A|K5o|orlOS zGomN{y5o;~K)OJYx&P!E!W`B!a4@_fIF$tcH`G(pKgpk0jbYE4Mxb>d7f)kLi06mz zA9>VP`uT3aYCm?q{CZMI8@~bofIb5aK3W_1fZ9dhytBrka=C_`?d_G%u3?ygiTSc? z7tpX6EdAl?jiW3xjUX$MbSrBS#{lq0K7GoWS&sI94n0m~b@3~Rb2ztx?desI!a`th z2sz!ur&Ix#XoJt$oSl>ZI{^^hfj4{w%j0NAGcd(vJm5y!_@-ADjK@dK+fk8j_fQp< z#tP0A3{pf4Gb8OZEAi_iI3@1^?neqi$8j7GDuJhgEqs4%|45;dzZ8URj3<9Br+>QH zhRueDziwc!m&9A@o=~1+P18$rd6vc=D@!pLv1sVbQm`-_)059CY>=!FCHE zu*{liYd~ed3dGQej5cRPlvFY^s*97@wnXPg%YLXx^@dZ|Y7NGQ?L{sZ0V6kl{~m`P z@etloM4t;(zRmM&82{t&v!auL~LrU3rN`}6hjwS8J&$hTTu7}*CW zp>g0=rX}>{6%Ct$aOs=gzvrnA@fdYQB}G#U@Dn3TCMpOoKd9dPh@eOL)?wAw&VYi_ z8%I*00QeIV+#z5F6ryVb3dUDY|3;La+SyC0-~|HzRv$jiK%>FW1l^4ztYbdV256ylaxoTF>n(x~SQQ?g z7$!0AyjDv#|NXfCfOR?9qEx?;aq~|Vnb}r5VR?oiO(-q|_OJ{h=`;_UuN=7%|M0!l zdc4vEganc#K+ZACvmvloYVDAg9AP=&U^7ur871@;NdS7g*R6_2@IouW3eO1>*jgmi zuYfe_7NuWK-%hsR;Z0^IO{Etp6_1$!;tiw#8A)+oWxUsq8%wGXz_1w2*WgBG9BtW+ zxCR4Ri~r{GSh4?BVLldW%sAh;|~;O1wYuHzNKCITJ1dx{5D|drYJ&s)Df1KXfe%Yrde4R$s7R?5SDnODC8{3so0fvT3H9zr91#x=7?fiV^ETksq_D8Ck8Aykc09ws zhFz}@homi{(OZgS4-TuLTfmY&dBf=2C(z$jhorMSY5^KKgA*#d zI6aaUSn$|DRiEKDzYAm;t5E?I7yC+du1gahC&;JE_ z9x^dAdxdcJ4lB{vBUkNFb#>E3JUimlx85w@P8pX27nzjoq_ht^AjHAO%Nq+sm18n( zJDNS{sG|xILjet$yO$`m=y9d2fy?51YJd$&NGZ62x{C`qZH_>lQCV_P^_zwuVn+iI z(|;R`GxcfSd&{={-Z&FbuK>1_FC2H-GX67apO0p*6?xKDYlAp{|!cc0;!_}$sN zW6*2pD|P=K&YW5+BidB*WsAldHK>YyfvZ%M;dTq5dMUSPZDYN!>*(L__EL>=Y4+> zHFpR~gky-NGnz4Cv=}+)FRx;RMHb-zSolKM^w}^C1xq-XJX>NFDDz)`*!#Ijk3F(o zW>iYFLiMcH4BV?3=jpg9iPQ|%InEhtI^Wq_3>#zPBYnQFi48~T4wM^^ea}L#+QG5; z7wV+(>FG*Dsd31&K@Pa8Uv7#_>55TcB-_A2qGeAQ+x5VT6{Zfi8}$b zU;y3r7V^!))Q~TNHJmWjx__l|@H0*f9ah}=;(c`VA~z$8j!@*-`kqgV%Jc62RFtaE z@fMF>?8v$*>DyeP<)VRth5WP@_uVt`XV0Ja1IqLSnGND>Im1i9^3FmuCv){UKNE3R zz{p-p=LZIPM8_W`Hed`1?0htUdO95H{s!F8T@C4~lrcc!YdlM-KuCM7Q9FdheN`3M^+ZTcCp1 z2wAwnzziDa|Ct?O5pKXroeAwKk=XXya{&~NLHy7-Po(g+H;#OeWCdKY1H>(m9AGqo z**b%P65reklShdRmqCTMfqe4cPbQ(%k>wRh+r*+`sH{f551)$mQwzc!bSmTo^79cX zz?^C= z+%_mRTDH@i&im9rsLDO!(Pb zso=ll!R&O0lA#nKdW)iFedWps{ac?d9{evjA%Lo9IQ9_1nkY2ewCC;;*}J#bycld% zXm0;0&;z^A7mSVNnK~JGrI1w@5Lf}BBtedb7?+V%7c_T$vOY?To9G!CzmQ^$aZ}J6 zSjdujD+DEIQJmZ%<-b?tNPR!v4q-><;Lam85Px0>;M`Z?vn5KeNc=A$uSU#UiDyYe z(wdF}hx>pIenGaD=q9{t-QeSmWyeJPyV4ze0f^$3U^k#>l>`PXD_iRAzpj^&b&^|o zc9X(}^-NN1>@=NAr?}S-4O|O-uqh}3FL)C&X$aWKJ-F=;_n%*1WN`mOYxLW3uR{j8 zHM?lmb7wh8ROB90*>?0MmIbqky0P=$@9gLizW%o755lmOY$40a%97jJR@S4f)`_f z^yct#N(-A)`2Qx*Lj44iCIoC37AirQu#{I+C}oS`F`=NM#SI|W4m0rdli3_#T3msI z4$#9T*L&RSi8BtEZIDTdJ=+dA`@@juKb^Kqd(!>Y9Y6iLAo8kJ^{JRRk6P0w=kO_j zj_{Yew|9gsIk;5p8<`#gZ^f zA`Luuw%ztv@D8-`I3h=}crk1HLPueP0&n@Bu^;1^oriR-{-82|?BKyZr|a+h?wk-f zhHeW^s*ZhCjM$A!CI<-T5UVtynZ8EJfO!A&L1udBR6d8DIosffNpenwW-JK)8m;O$P6QucDcJDYZRP2e{EYYWGjn7Bu$Z_;$dr}^e8>rt~h zy_0KUJ@9iZ|FVwoo=`r4rK3L*hGU2Q&Y@ueDGph9%bT}vdl8i%qPrrRMdYKINGzo> zIbZm@dT&Elp1V+=n^&fIa%u76pFt!GViAF;k}+LJuxm*DP-7o>N0l%yZ!$fpxt~P} z8*V_Qo$qke#mJiMTVYb46!<-I8+u=(i_K`4 zNJL17d;<#M><(?Fm92N>8JVfNoJDUkIA5dU_4zxPw>j+1dLN1c15=#W&dDp%yuO!* zKBoKMaZ*~_rC9ZZwdh%|Ah8|>Vp@hpW)$SN@M(y%4HB&-6uIFxq0K5irKwkRf6imO z!Ytdc@djF<`?pssc^rf9f+J3L2r<78Vy+hD!8$!+)$`*D%0OzoQTW)vfMP3Inumis z+55+Z%5(_ZxET+E6g60N@y4oj?)fi-_|A*dyA4K;sCrn(TmaaAKn2yjuzyXBzdXua z@~g?WN>--A}vV{KxjRLF|fK zp(Z5a!=wTrvxsGd`3U&61LInY+T<>{r-^7ch#@@k*&UQUy@1IbRhEe!yJN6xp?L^$ zSQ3)h`i)bc9tA}t&SiYwapA*wcZkkX0Uyhm4=v)x&3;ZwUe`l%4&9X~8U@#5+o8*x z_(@wGJ~;tlX?uHZAKt(nNNpkC^`fP0du_iRs&jWyXIvaw+q4yj;HS~PDA8#yX6Ac> zX@Yhhrz{ulW33UrDDs3lL`PPBvo7nmYVlXzT{L54o}reLk#Xsmq4FpZ-+JrT3OUOV zt9d?gNS=WP3tOfmPS}bZ+}xPM(8!JrP*l-eaH74BoR>g#`HiB5QY9jipoN4aPV6=n3fTI?4m z$5z^2I<+}eGhv3?99yR@)_Cm)0Nb0Lm>xa-p$QJ+pr1kYSbRv;$m4M+BLI#oe19t9))lpC?7;7xfQzv4R?}R|m zt1T3eSYq%wTUIeVk;d0$+jlw+(_6xVOtn1!uH=Xe*Ngi1`F!y=_w)|@nKQqzGhrla zq12s<`8iiqfbuC#8%zEi-RtzSrxSc5iVo+P^XQ*<4Q=|Yl=zbIVVC;HgDu%^j*bV( zf4<*3a8_xYFPscui30|#4<8W%Q+|Fbn0JTlJCwo$YWhY-9`(G66Tc8L{0=N-8$)d{ zpm``5>D%OgubA?JhIM$&HLX$4hT_@9=`x}uYLq|w2#S6VIE=e@Xm0##d|3kRqj$F?j=7fn^_OO~!%7ec^ zz=fhV+-O|x-BdU~V{8U4+kHT#J(!0PKpx)h0|t^fDxLuiw192z`ox*_go% zFu8Drm6hQz6QlYTe_5+AgCt}@DU_MR-?HiPUx~gpNUbde#y378ClRHQWjR3nXs+Lr zb!Bh?PQ*!(b7PQQNSq*$TR_eyiqB{|s3^e4eR1(Kf3vUAxZj9kzV~+iQAa+ESGJS| zCTVfhE=*c&JgoUo)!O;Hu6F71?kh7|N^zbqmaN8y$BoS2Y`=9XLae;PIB;xbV4~-o z6p`Pj0=S3K=kLCGoUqKuVYF@R&r~}rf3bC zeAU(MA=D1kmU$>2_aD|Rm__s2?Db)A3tIm2mWuC_iCbnw#wzj{0^QH%V4=Pb5sP!B; z|9KnYk!tTEGb3Z;PSi%>b}YN~Xpkcnv9+WN@CgDabl@+NN8F1ufrv^&Nkq6KF)TPZ zcpSt!R0K4jmXw}iM#qIoVHy0XfT*1O6RnY2nq3U`t0Gza?&%@Q-r#w1^YSuXxa{?5 zV&tb#R5#0Zl?xwkwv=pKhj{SXVO5c}9M!U3?lqwtow&BE*2fYO5MrJ& zshNq@F$_Upe54Qmx&|TMhufPUl6>$e3`AKgFA$LgOkv`*72FX4cqIa;B_%Xm5hxVk z9Lhk$8qqpQ4V1#&9b@n^bY%xF=$-j&{$>Z|%9Ndy@YX}B)gDiC#8xLpyPVkhF8a;A zI(MArY&ExFUk%f&o5>+@kv4Xpf7kdJ7?^z12j8@IU1z*=ieP!h>z!#^-O?t&1Pxk6+gBLUC7AD9!DlhZ#YD80}ciH`-}71jgYYp$#g3W;>= z*dV`U;r>R&B^sAtDfgZAa2NQAlwJO{UW>+2*3E zIN%Jhl|i|~i>T;^RX~lM`k4_NMXRvu#PY{2aFdd?gW`;Hl!vBIEWh4jezZXQqJ1|E zu<&-3&|Uu=9Sufta2CcnAPwGai4ahxZrnT-0BdNau|1l=-q;k?2j^t^xbsl z!?fy&a{!J7#T(^kBJfwZCld3o{Wqp;&_W2fWpl5;;g=Hkw0#;hyL){QvHO2ek7?n_5r;^JF zt_3f*RX@7~&{;q)yn_*A`Ij%7uoFZukeAT!BmROQ`KjrI!0wb-`4GQwTp@mW;0P&&BdwA7X`T(mU>D?DL#XEZujFe5`STT2uruz+_AmDo%Czbz98-I-Ba z)KI1!^503%Sd2zwKSr~NRR4#s_m0PU@8icWp%8^+R1TRDvW3dt83`ekm5fA2iIQj# z4N4)hv&+a#!=@rTQpgCYL>fl?p6|}NzxRE^1MlJT@U8VlP`z+$)m4C@=4W4wdciueEN^H^78~;L_xnktHUq1RvhW`lfUF0Y(J8$2UQtsM$yCH|95Q zm`z@u8aR7CE)cU~NC6HU=slh(5$MKyuj@GLuXd+G#b^BbM{5c?So4X$D92P5B9o-Q z`x=*hc$qSPNdL_)3efNGrDs%x>%gO(-F?rOg+)Vi)-rTF0oCyk%8X1n5cO|MTmdsx z%XLow6+-7Wf?6emh_4G8u#?#(fE*|{FRFpFM3T^P=+!8yIDcEwf8^p&G#cw27~sM2 zvd}C^MjK-ZUBZ>Pd9iO_*OI7UpwCR6c;M;A(oJhME~Gd~%CVblxlJEc-8*w8&peNk7awAZ0pw6ck=lt&=Rjo#c4s9SAO!Nr*4{oUa|z8L{r>%Z+Yhgz zr6u#gC=_VJBY0H$2fuMS8~ntAya>@EnS2U-Am>NJM-l~W={s2DdNzCVt{0oQ#R^1d ziyT`(De8Ihqz*g<-|GSUOXsU0o z`JCXAyT@{$V#`%i)W^f6mOlz!*B%38Cz<+r>Zi$$2Vozlv`58%`Gss%Imr1Edj;|# z`ThljLq7gk4uR#JVBWxW+TCW$)6?HP`0_>yT5o-!!l=wAFbPWOzEeT19=X~0Vf&A!+HdjO zA#TI!$7{wk5dN<=%Y<*G2CU^|rXLA8hV-BYRb7XsPvT8UFn7S3sL?H7z~PJIn}jH1 zs)S|q?PO@x$f(aJlJ)ha9yZ^& z_*%sw-bF)PbbqqjPB+Kn*VR+r?>KEBLx1{`a@Fv*y_PWyo`pAt67QA#%E)q$|HgKi z^H=VU^Z2$Mz{HUz87(j^C@K=NRa2v}-h$P{-ZaAF)KIwRX$8#{`Jdzxujdj*{V)|?L5bIk&{}u?AJht`3&_jGK#Ma z%&MR=h3A(J7(eQEBa`Kc3pdA?#s*G8aVF)_zoTn@wQAM^Wb?_;)!=Vjj16NGpG^r+ zy&m_hQB)W+sqZFzK|>hiwZ|W;{5mvI$d0Z;X#k6*8scX?vCDB1>@V7gjnO8$q9fpy z;R`s(s6iK98TMb_CLtgN=_uC!Uto-?Q?$a(q*5N|XG z#K;pvC^zl!V@5KKI*h~wjV|1CiZM5E+xH9W)AAc_sH{Zq>;A4NCYeWjARZ%%^nsMn z&@_6@YZpSRaPgoly##9s3CYg1DiT7x%y;oyRm?#02wQ~;gcI5xTyjY#XxREHKbsC@ zG7Ct)u-sr^G1Wlc0f0kto5Dw<1{ya~$^jgTpDo@tNwkPFIC0A&|9LNGu)udFA2nCT zocJqIyI54g$$CQe3f~$T4Z2TIf88E0C_HY0%pqg9L3@yTjZC0}E=vpVoxCo|xg;ki zlu;l?MZoXUhwu9w;-Y<0_1Dgd8%D{S`t$<+Y7{-DTL!k;IPUW5QH9=jQ_-8q6JIk(BbgRE1f+XEXp@z92+yeUM+fLo$i&cwfydG zZsE|dB;j+A5$lNmyL*gZ!=)N_;yp;2Bl`r!P7zmQiWTE2*9vA z7Oxrlvjg^r>?6gl<|6iJJ!-Qy3`avy04Gqc22`IcU}EuKQ}J*b;}w_AQNPITvORi7 z#hl6D5?=@}oxOsF=7_QS(P_Sw*N|8uVN*ti%q63ivMfE8@I*`B7Yu$lPHK>^gE+cT z&*`7AvQXSmy~7~gY|_?IRC!~tz(h;#ZlMq`mqJGIq4>VuqYfj45H5RC!va3zL+%s- zxWSL5U!L5SvP=7xgs0dof2$_$@GC))=>~=O*V9m;uc}64M+iEzT+8WeZF2`B%mt|&gB8zQ2{%rx7h?=pnF zR3EFqpz)qcvY(Di{9~d(BoqpS9!WSV@q}e?Fp}ieLBQ(MLe1;u zxbJ{xj#F#+_L){>w@gKikntThjxJ1D0oe6Jd|-mqhg(KbRP;D}jwt30azo zm)w5(mn2l01l|MXX9op=sPREByqC3?s(%-Y{oY2$s_V$!Xz731I<^xSbvp;a7@Wvr zK%FOrOO70{IQ6wPHP1h(Yv(FxDyq9-8_KJDz0Qq3 zBG+rYzKl6dvhaDB*ywF%_YJ#Y7WV|q)YIFW42lO;bccTVyugVwd+>4IkB`$~wku9e z#rvqH_D2Je?w=0#?z5;_=0 zF6>Rcy`Y-Fp*X<2)PuZqQuo392};8k+qdNyx5k$^CH4^SQ6^?b zC+kVudZox*@6z)(9(~aklW}Ye!ftlJ-9WldbnfSog)xXi3{>=10_#JbV~aBz${zt} z5q95)@r`*n4M1y`*|iEbt($Oy%B|b zi#K~lT&^7LDp7a(m_#dbwgIuk_^8@YS^)#uHaj&iki;?j6!RcZUunU{^BymZBghVK zc?+g~K+zhCZ_}pClM3%e8?K~$gf0+v5Vb}XKIV0mvorTtgf8$#@}({~I{GBisJUiG zpQGJ-$=)-on8zt)&t|?E9VqkpTyEhk8^%8b6o3N56HxP+@SFCqu#=fhSb8-0Ue1@6 zmbOgFmOMX~+f~A=5hlg#_+fbz!@J5hoS6=toK; zRP@2TaypUoFCw#stU32Pncq#*!!I3sE*AgZ<}kJNtqp6#A}_2FSUzVaT1T!)s4PI_ zq~iPsW7Xl3@R5~^i+Ggn01061bqKOskp^}Sv@3ZZc)w_tc}Pkrd6#R}=u<}s2pQjv z0EU_hGz6DeX3Gt2hG5FZ*A|Tjf6~2-f4+1!Lulp28E&k%NR&^Gc_m!+7QMyWG69Um zslTku+id^Ay@p>_mJRm|8FmHijSu=XtpPs4aJ-Xb@ExAW)CG70OUqTW+iEPonGPNL ztlgMu9?Ebg<*i5~MU=9ILifC7)hLBd&6Q!&#?bCYhHpH^16){vx+@r65rAGgn2|6> ziVWmbMM9G4?oAb5^p8Kmok*Qt_`w8}f|NdcNJWa#p#T@@5AvYS!^OUl zED3z;Qb3^|i}_z=JQdn1JUKl&CvWoCxkG(QynB}Z%4CePJ$hqR$(+(N(E#d%jW^~s zUsj6$BhyT=vx~tULFS^ur4uQ7>ZVZG@N6^g3Ie8LY7rNJwzhz=XaW1`fz8t65`4P` z)O>o}O#Y%$;|rs(f;K4|55)230x{IRQ+@usRJwV4@=Pzp_Dt z6*?l4`Ah(IK$mI~xA`Gn7v-eB32EE7g*?a}5yK`_d8aGu55R%)39mefZ=mpCa0ojp*_(Kre(k$|OaTKB1cf zqYi;2U4(vnm`iD(_Urh_6C@XHZ?yOHAldkLViT)z| zFt7Blzu5L9C-JQe?qoxeq5rP$k($$&MIFsEtVF!QlpLy!jyVCSPkSjR-*gg0oIvhj zKmax}4Mp`lyNKS1m*OQxE_KQ$Y+7UKbW z8C(|LBnRM6q6V0t@%=9ah))GXSRE=iRti=@3tDVxwD7%$yL0wk1Jc=%a`Vk7)-Gi6 zY|YKh|bJw>t+Ta#1_3qaeXc7gYX=Bovf*TTK8wr*W3}M=I{v z0p;p_M{uWzADbC@k8>8oVzaya+k>H$-Wh~=AVCTVrvj$udLYAO%dhb^eq;pQCiww) zHL6x5GNFJNMtk=Q*m7PYs#I6l0t(RHBPFC=KbEgT1NEq;EdG~B>Dt#|S04sOO&%TK zfXV%v)?)+O4Jzg3tF~0B>kNU*N%d#KipOHCfqYv zT?F1kp&bna>YsGL0*D$&6iZEYwU6j4!aDpP?-jx*@GY83+@4H(0xLyrA+&?A7$5~i zyvju%zYvwkHU!|*0f}KD6s%RTt9eVDTsQ>f9oYq2Zog1;?cB1$79C@kyuapb`2Ue2 zWBH|tlWZ+u)_alD*U+FdFysk3{^7%i+Q!w;vBiWdRRwGV&dvI&Q$( zG;V%BktzJp9Jo6oug6y>sdIG`jVf?Yyt^y#0Dr(cf7q_}`+F~B1{rUP^xQ7e>LHme z0^p38Wj^nrN!4uo^O;m2e*>XnSV6ylBWSe*u!F7&aMuz`ngg()}&{uRwZqc)a06BZd` zH!TC9FXk+aptiRJ!e%}uhqp`)5tPVz1z#KPsRvdco8l!+W}3(MRrI$0vEJhk6dmdrF%cpbdp7&KBuq5e4TfD?9I+l8pdKN1 z5O^UKyFRY}LwDlxauIHQ8mh~Hygy|)T!Zk%rC>4n{hlvwnOwxTyFu1D2<4?cYz0V% zkWVu;EbO~XI2@b;#NdYNIRxlX%Gu>5)DhYc!@(`WeC ziY1pUh{?@3{eB_p2-z7%L_CI$!Wn)xqPmFQx-SLCDe*I+0lxs3+9FFiwd{Kckx2ir zge(q%tD;8W-03e%UJ{2TsSaW0A$=^g$rrJZg0ikZnSg)-!bnDNVWi7}1WJF*7sl|= zaqctw|BeM!0yahG=H2N~7oG~0=#HI{C&Ny;Qi~N@~?Y-rII&U_*zw&_L z4gLEKd{V#w5o+2%l6lv+%bp;^4WL}i`=&McF~#?q7Q<|s$rcpehPWf5iRWpz5I=>) z3xHWpO-wvgnH)rN@2+wiP>#O7&yA60re3SUAbb4d^M-}le5V`M6QF!JUd9WU=Y|QA zNInDk=qLp6Br>`uNsA3u1kpah04H#7Zm@nZY+T>l%LQoX**|JY&?TwR*fhe===AFD z6$BIE3lhMpZj9c_L3svvAIeK83A9jif5n+dx>B6D1Zg7iHnPW!^@gS%EbdF`%@D>o zD=c;m{81$2)@Miv#_u6GB3eS+QNd6$IJ^7T z;xvChI!cTCfgog91=b?_Mot1GCdDIZh|%$rDT9(YNC}sNuLU^}cb{l2GF?zVhjS?f ztE%yi!Z!4hm+)NPBm0m9p|vEcT!Vgr5c<%%Jj1eYMU@IIa|!@Wbi2~W-j+p*cAR=x z|Kqc2SGH=Alj`R;LD$wYZ_3@l{^|_QN`h8_zSG9th}Jn2bjEwYGU&-@iFOOG4QOc< zm>5lLn=bZr6j+d3b0SOq8Ud=XMXbx~aM_TmoIFFaci<9QD;>Lg>)~)L+BB}&&(eBs zp?j0tIS_k@id}$0G$L9Bqa;_wIMGOrnS@G&Jb$?;OyJY28x@S!(`MpogHhqgW%gz_ z2T?OnFR-;{#QiWM3Ci>HGdP6x4lc}$8o&eE6h+ul;bNSSqr^hSsH~I z>N^8>cW0_GsJ}H772GJtH}H6G0!E@9K~!fLn(z!_D{DpK6I2i*_}q932IBoJ#Gw42 zTn#`Tm!JEC?*fuz1RCZGqVx?|FLSOKGTZWB?e1(7$SdN;!Oj=hy73s)9AJL*DI|{a zpnA&XT0ta~Y?ME0i!Yfj2!+JhKOrSoUYNef58e4A{0k34t?|{i;oTs!0?p4DK-DPj zcOv*n^mKnrN%XWZdjperfuNXg*!b4VzXkj9Ib|-&%J93pH|;vpc#)}TlcKI#(x$=a zk6nuB0|{9Jk3Gc_Ln2Up$Ka)oI69_TObzctPMuj>D!JKn$wE;>JPN-5Xb2`c3(xb- zLzn+QCB-%ziD?N5+}N|PKs9EaIRN&HIEvHUR0ED3z75#=n1d15_R>e{#vc(xRKl27*GF>o4mB<@WvpnrKcwE-n@;+t^WbU z>1>p&G!k?0`-T4GRq&@C{W}-O7SNGT%6^vLq<8<@;z_@O9fmXM*urm%uMaU=S7IBqIAXWZ z2O*&yLF{=({LH_1V?h`vDAl2{E


4RTQ}D|}q8a>-o8*5BQIGhcuyd~Zf$&s)g? z?r%4Qxv0OUM6xuLm6OEAU|wcQc+VRz&S!fmsiOOYe*eC4yz~taR8K%}G$d?JSnRkF1I?Vc|k2xlj*yrCg?_irDgy%v^sPJjDr2j$qi`GTN5wY=m&!Tt$_ zCnW{@4W0;x;4#P!|3WXK?PJR;fzdcadHYpOn3?Y!QBBqr%+l%<1n^2Q#e$SqiT?|D;o!)~c>OeS?uGNJnPgHM-J*Vw` zbds8~V)1vuiO<##iZ4`0GwAXYd7n)6yJD z@pvJW7n#cbDi5N?vp{7cg z@E+mqD-||QTsoez{j$r~x0R=EK-iFs%ATasVY^`0%e5#zJtg+nE=QlL;I~xyDGA(E zk}}VxwY3*}9*WGp51H9PZSA&>o4Xmez89b!F&ILg-`N8#DRLGs<7zW#y)%8MVQ5IJ z(BIdTnUm>je1Visd3k|jfqk~kCP4=F5#1w4?$UB5D9V&O=)6_Obg6=vM-DopyQuvR z!l3O0#n+$cI*f^KDIjrl2;N3HW`Jj)a~&Ui@k4lMt=g>RczEIAXnq?GiShlck$#d= zQdKzlB%#|S{4~BN5)rLy4>}q_>+35YKR#aD&U!VN(&+enPmX(EkX;QTm~Zm$El7c-cfO{q*VHUX8_wvK-a~$Z(Gfe{^X0}#fn;D zuI25k7;0o0?8rEOt-(mG%uCRBgr$vBjad>CLCPvBQqa!&;U0@mNFWBC-7%6>{06tq zw^l0J9$9sB+gh8)*`Kx_D5F#cWcUP}{KDwxFRHTT+_~px6unoJdrvO>&qB9&j#eFMVNr9CwI zD^+tWR<>DPT}!w#x7Ta%{e}QvLAC1%jEwM@Kqgk`v2C?rM6+6(vHbLfb_6F1mNkPP z^7b=RZu)qs^8^HRR-9UwF2Jhm{efnK+=|@Xo6(*3nc{b3Eq=J165n#-wO^|75@34fW(jjZ1rJx zcM7?zDb7&ODyqA?)&48GbOHh({RC&RnNhE0zG~J}uhGVDV@*sO8(q5s$6r?m&(50N zf83)K9IGLHhE;OC|Qk&4fw_N(vT;YtR zr{vrZ_qbTTb3tHTJI9(0j`hx@ zCgn>Os!_MsYM!ceHJ@ou=Xq_lf9p>L*P9=IX0Acz1H|_Cyt4OyczJsHM_$jDWy#LF z41(nJ(Tz%JP~TTuQLWX!18+$kEsL$YI}_F!5z9ggqa*0yG5B6%RM#z5I_S|OFS9~j z7TcPYqmAF^zCGXbl3(X0zeVCMDlVB7r)I_%N;FwF^YT*AuGFFAA%`v|X|5$N3~fUJ z&{ha^)b-!(Hq@#VL)sqC~>xws`|c7i%yF?Cb<)Bq16S_euww&C3q z>l8s%;S?uGTrlr5K>aZFQz!^&p@n|08n;S*rKepdCUMCb+zdL>l`Uyq!ss{0+EcVD z(`xTTaeh9f;^e-Sa@zwe%8QRNb!MlZHnOt=IQwj{YX0$@A8!}{(dt*P*5V^0aZ#Z) zb>Ft!M1{5N_K!H`)=%Hr#o*`XX)Pkn)$m>!zK9LcW;?AfiFfAbhtr(dG+~40% z23-^5($yj-DzEYx$1Jw5Urj#ZQ(8V^-yUeAxJsFKP^a^H^PTS}HTc4CGp;9oJaqMN zQ8^=D6xHArR18&6Fe@B;OV$8!C!#_pC^=~m+aB*%*nXs$;pWzi_?2KX3PVnP<^B4r zz-vClW=&azXhvfr<8apk5R2%|$7jd)AdzG}Y9UQvy;5N2%yKN45bOX;&@PHCnv7qI zb23nZG2+qwnxD7F{h2Q z`Lz=r#W{t0jW+Ba6B89>AX+@a;-Q<3;8tcwZoewoTu=7!e|lFy-4ZJ;V$9z6n2wxJ zn)Yp_F9hJm-1N}DP&eMmg3tNe(k ze2tK?k=&eCC;#7xd>PQUQxTvgUdmx54)I(i;U_!TfoV9RAT#GGetbu67+-4U*Pp@* zKleRZZU0?@&JppX*ZkR#t%*L!3u7S`$qYuTM>}`!RKz_4^h&&cz+3&4*oc%A&R0?4 zHQf5IcE@g+TfUj~^r*XH<{_28cAk!5DQFU!>KD|B;LS1HY;cqJk4q3_n31`OR zK7REbu49rFQ&c2_6piVHI{Qb)C!NJbZ-zGV1d}M0sEZfOM4vdeZ%6wAR8^RQFIujD z#0A(4$gvb&Iw-D1Fjf1G@x zk?MIeKe61Gf5rp1EkZy%QX&U|lLu~M?mJT?&X#SC2Fhvfi zK`$b4fM{chF5Y@NwC}%J>EAStehId;*SYVYeEa9rq=^@cFM)0`Hw)x}UhHmdh?#zj zw}k-BF_^8WWem3j6#g4+5ciQI3>0q48eh-B9DbdLXEuh-{9ZWumy%B?zy^n<#X0&Q z6d%A0;vwe%t<5zx<&WkJnAYCPJAdc-vhIL}*K2eNW5`E6-u1*>&b2y4J;)Yx(8vhM zkbkC26anMe0e=4J+2y<0uY{yfm1}@eBhMV1yx#0vSd}4^A-QGvqvMGgsF~O6ZD1#t ziolCVBtQy=k!2(?CG%RxJg((XhqMFFPLG}O%|AECqx81~00v1s+ zpJEc@o`LOqT62_o$|BCjCVBWqnM?39sd*h;Vf+}Ws_c;SbL{b7$Uq?YZ)&vXeC{@9` zjIB|m>C+q{v2vs{x&Z*4z|YvDOX8D-O2Do!Vm4edEO4-<{ThCjVf;M*2A}_Xl<(+u zX~1`@QgD$8VU_VLSHx(V^Z}H7{h%p9SuY9}$59|}uqLUkNV;=pBZ-^_!RGk3c`X(h z$zdVp6hP#gDFoeyZH}-62)#)yU_pAW79O{`^8sH-dI9X6(4OkmxFyE*I?1`?;%?iK zL;r_YsBqm$O(FIl>`9Uw%JtV@cTlklLmLUPuC>j zJ$JS)5U2}H-VLw;si0!1NFW^wuMvDLgfz$t2p}UMK%=oz(5}a)%v{@~sE$QeQC>a` z$jJJpspi1HKOuohv0ZZaW?Z#Ua)LhK6FMNOuZd@u!cK0^4?PAJdkp&7Kgl+>WOnTE zaO(QU_d4@`#iDUV6<7s&2P6-PSHw11+}|LN>@%2k4#S>EhM1TKS70l6p`Abg$K7t_ zzBoT|v;NCiZ`Gr7-{j=C455+z3VtUZnrjqz+4`-w@naYe5)L%SprAn*F)z#*OEOHBw#bi`z)2_%HsU4>dhGk|#3 za7mNVL8uRbXN@LnT#~)}KwvGwOLCPSEe9MQsn`s1=S5|9RumhlEY zn_=`ol+eM|*o_GOU2k~W_r5KYA3kiH0&{4&(8sijOX4}iR{VJ0!o$kH>rV{X-P%2 z&nig7sK;^ie+USD;@al>i7f-H_zVzDrTt$Mm_Pc75BY61WdUu0cEk&ZTrT*4KePof zs3SO*fh2#?yz&4Wg9NxjGILvcHgC-@#C0MLC^=fhf^Yuc3<2gzRoa1XA#)k9p2sVn zfaJ_@-czP)gLI8Dl#k|KrDVh#!ONyQW71l0*&*4+4@nC~iMtZeI#`HXpYZiPj4GD! zSOk*-?n3hnBC2V0D%RhhWQHgm4DbAEAwY=aGKjapm0W_)AzSMce*6O(P0U+3VBQc2 zvq{P%QI|lj|-1gD|nVp^vQ#hi2)bA~d z=bRM5W>^5mxQ8rRzgdsJ*q^)x7YoVDw?fN8JcpD&A#2CFf#sP+2cY8EaH(Lulo)Zd z{+%eKS;OaE2#PlD&YdE&EYqjLg$A@ZMDFQVDu8x7?tgv*iG0V!h^3kiGPSgH3^t5e zR$rZUHH1sWWfrgGD+-;vDs1`I8f^~_smx=zCbzyh{uCJM(YBNeqREF)N1jqyA9Y{w zL$M@{hn6WOczQ#>0q(U_{}{rS7}kqI8Ja~e#Ly{^Bh5m2`fliZq~QD)CUYU#-6)mz zAQR4|{XFQNjys6Kh(}Nb|9|*P{~LAJaZj%XtrY|P^9oz^_Q7+W&aB79j+T^^ zFv`9kYcZ-WGwLZ2!)vSA#r_Pa6{`W$3eAW!VntafI18SGAet1Lu{?cnwZ;#N#pl>h z5I*XWY&d+J(;!<&d@au7>~0bTc>&Gn5WeCrqgyeXNZo^Dv7L+~F;48Z+WCJ|U28zM z63Zx+C;VnvyNq{k1`marr5?taiH9;by8Yl)U6`HFK%e!`tPZ@8Jl#~wgNqOuj1{}R zCaF&(SrnxTh1_Z+aTT?$9kg*qjxg*F;;j*w&%84eCx9eIdrtb+jTP&z?!OG4LmD*_ z2~8)7R?2^&+yyx9`7DSkd*lLM5cY*(B*KE%^38j?jbz_Knn6sL&_j}=L?o_=!L5wd zkkc)P#18_a_d@)Ec^<43$Qud3MFwNJP4Z*9O>eTssuhDMO5B*Wi*$$n_b$5doJ;+8xk+z*}$~rNG^}!^SB679AzjS2`!P$9H?xZ`q!th^M;fJ zjpL`eGGaWynGahD215FKIqc! z?=QWIm;pNo^XY;R*O2X^L)h`s&@eKB#_*1OTSv#<^(-z(L?C8{J+Z{KjD&AX4=uP> z$%>^Q2s+5(bpol@Nc=h^a4zodc{91iE*%$%QTRvEJM2Q_&=E`TN*Wqx!-FiJQSXt> zeqBJbQwWR08RKGv@W4FwXap$6O8DK)FDi0 z&D*a)F3+k--H(fk_#*MJXyFDUktGnGuZSY5Jz`|R9YOp92v6exvql>4rxT+h&D8GP_Gh);{Mckh9)`z)yH z2*89RU^5xI3RT^smXDXOUL^v>|3F+sy2MLI&^=Ow-lR`If=vde9R@!bjw%W3ya>y@vdCG z5P0Tl2%3+uahhjD(cF|pi^3A$8b1ZNveA*%XS;^pYZM+*k#@6S{Z*hRkjA_C>uD^P zRk?Ke;niHm=X0<*yrCR^iRcC@GA#vP@;AaLT zZ{8rn`VQ*M5ge>%A8GH4E!`V}1!#o1jnNu4NNNWCa#=;RckC4+*Bz79)66#P`^nmL zZP_6GxwliZ>A_TCVApjhmdNY?NbB^!&ksBfAoyS*E()AJf)qIF$Zxd45N+hd-4GiF zctaX`41%j6Y~ZOS;JxHcLTKVT%pSp7;^EkpsjGGm}hnoS`LSYqbjAhT*l?-Vt}x8vUo|2 z%hB9QdD@P=s2V&OB544podCAMu&ZL2|HnyrAo>G=M?i%Sp-f<1Ot^6VJQ@Cgx*T+| zOUn0J?F!5e#aUM@PqVM&fKEf1yHb|;5AHo#Q8Vu%js925w7P~wAt2i}<)6e-%!;T- ztw*NAB6Dh&|E%uM_1fA|%S$<*1hV_GLXYgFoIYw-^^_>Wys-jZukXh|$~`FSq{okU{_%?S_xI0!|NdKi&k>wq23h$^bL+zV@m!f*#l4L(YATW{w@J@@3)?1HXOs9f zdq3T4;akki+(O1B0_r(JBwJflBBFNda9R znfnz?b@Ubx#Dod~gf@vAew`K;2g`B|6xw8*9LcB^ov_6#lB@|t3&f%PFhde4NOJ@< z!)TiRX*!=7(u}A8pZ+&3Cp#i&yJPm93E-d&kEGoK%7R8 zwx@-OT3>@944b1FN4kq#yHSOV*oar5uUj71&8HJjeBBOnTMK|#1%0)d5UcIBtOtcI zK@3c;EU|Zf)5U47hLa0R@O&x@4;kl_K{slcyN7(BF+8 z6g7Xcw>|Rsze>${GV_`wai9wFjdJN}ZM8Zg$`>qVsu_?PP46p-xOOvQj3otmHp|;X z3P?)E-i=y}JVe;Nr=uJs?f}(DZc&R9KE(Xb*MkRc zxX*A`>QOM0(0h@^ypkftc$WG(b6BM)pi3 zilBC*e5|;&^E(5s2VWe%KTwn1ejw8HUHBhWoGve){j*;S3#o*DMx<8>=1#&W%4sxH zW_AzVHwh5L4RZna<}mKErmf?NXDNC!aZ5eR9^PG#RV7x*AEUv9q|g3~zodv~7^sJ; z#BGcOK&lvY+k{Jl+jdiwsw zSM-*>znVhq0YJP{0UnS{5af^C$@S_KgvA2LS6J!-*xrQhST+cdusX>kA7Z&EzK{Ca zZ)SuZ(xzz`-+5L^9HfzVH!aa);#$q*yOt760bzLjKvo^>fS`J0u;QxUyx9PniV$+> zyr=>1p9vS{i*h38c?gNs`}+0kGtd^qJ12YWttGNA6A+s{gq@WSqdB_L<8Tu;GnAd# zh$u{}gw+(zpUdvYb~LzBZ~wNO*YRqVqckRGQ=Xw!fdTFuFgeH%weyrPg@lZ1c5K=@ zv#zb}+1X{m7nzi(tbhyZSpjmsOca4>l^-oiJ1*y}9-h*FORX0~sd^`c zNp4wbIvb{)n%Efh4j!v|NB`vuz0p@yb;qB-mn={82&&6l>DdOpDq3qd`|_=#%+I$0 z@XSe(a+3I@@VxjzN{U4FG9wm^IACKJcZjHoMh~G6YU$4I*B)ZtTB~;P$Z4v_rTp1e&ElGIZwbTZ<;I7QkfW&Vb5S(OUG3jBGZ7L;(SF z8HtC()t+gZ{`@wJItBda`Vx#;+oW{zO9U!`YE=6@9{`bX?mE34mMuDEWo5|Rl2N3` zsGQxU`!QjEKrV1ydq8Exp5*`I6FvUQA_7_HPuLK}8tP_}1S0?K!{&W9oBXN$=D+(= zT|d3_nIcK2>O?7_1kP957-Y7TDDK*}y4_0tV~)c>*p<4M1rEbpY!}Pq=D>P^oAiHy zW*`^`VKQQP;8?!|glxyooqL`Jp4o)A*4xl+dT%!ud^~znV-pi1xl_GG8FhWT@a2?Y z9vXC^6j(lpe-i-&^C$XBozK|>_4X~5m@(8{-%Q>)+_;gOHCB?x1?;h-?-<&i{Nmy| zNQz9-_1B~8TL}v>{)-l#oMHD5fi|Q#lMJwHDoeUP$_5`FZ$4%V>6`HbGtu>NzMoyW z9$yO&L7b&W$!`GB7Z%pT^Msm}*w%#HvE9xg>o6HBnJ|(hu@Lp+YV^r`QNEj4SRx3@vy^7v?yZ=O* zkc_G6xme<4P%b@D4j1O*%E}@4Ly%xU{)`$uZoEK-sxo8U(O$hH2kt*8`Fyiciqbl^ zQ7vAWN=dNb>7`2z3Ptb6m+%q!Z3eKq*1a4D|1QU6oO12Uv7s}hJM$&`eOl67?L4DMZ)JJu3YI- zHiEDtu6-db5MT$Sn}G&Z)sDSW?k8hQgZ712-Rn@77#IL5U))1#NNxI>qW4G~7|0Q?_U-N#%}T!g~41 z_whCj%R`7|I0mH-3beF4ckbk$M#)iK?yHgnp85lRim2X^c18ChT3=9a2KS*qPahv8 zgvz2rQ9D6XiIdX9F=!O@jcOOgZzQLsDe~3R4m}^qPRi;DF+ik>gp9%7qDxqXD8K#+ z-*8+_Y>Y3`0&#+Hd}%{JkY+4aNviG2I0m!h)I__NSgy)Q{2S}UnpQ>}`Be!=)33d|@CBzSpl~5&mTrF@#im zxnEi9o-qbb6KviU`7c4ZHDKz6wUEPh)jO|V2vQCSwpKakbWFGYc6q%ZkS~$Ere5)# zQJ7}RzO!lQHmjA~FBz1Eyq}n80`!c6BKlKT4ipDKiK?ZBhK9Do=8WfZ3nOc$FJCGz zFQ@Ml>aMbcxST*h*MWvu!XFrt>S9Wrd1DQ}DdSL{2O zXEE9I5c=`@y1F{I0M)(28Q9VD?#5AHzOcJ5#L%xh@3#AD|DDv&#i!jZdwO~#G4L00 z)WRYJoVgfP$i~9Qr%h5)oO|*~nj|Lc#(lbZ+2sO0F#TDGWI3QNCf5e$w4cY48+Y#m z825M?RqilW9)*IGcO-^sT8>RlZe2Ws006%+Uxa^<&--?lygWPZiO#-2kW616om$sZ zNXtbvvci))ZrcPm3oV z>EK1T9+mMNeCD_Gx?=p;9ZsmSwIIX(e#<<|loqRhWfFZnL?&*pW*_$cz>^OzJ%l?y zD02%X-=>e6v$IGz@UAik+VWat3rpmFo1Lx2S#;b=IKTwI?n09Ly9kr|qYI>**uI?; zFIW#b{taJ4>zBPhDkh3C9b*qRJ5A{}3_r!>yA{I18Na-=b@t!?EXZnES3BOcDE?T% zw{H?*I}rf=hfr?C07pk(dKvXPzy({7Y)!kaqQF=w<+s1q9%nW!Is#LdM@x+KxqfB6-V-NoT1$3siYR~&>STtp?mZh*t){L@jT*xX-=`Eo)+ zD}iz{cN;^|1qsG8@HN+wmGIb|Nf3sKYAK3g(&y5A%|79P0E5znfK9Tjyc&iCZdisiU#`*HeMg=Nr-wG&aRd+pBG=n)pB@U| z1pV28a&MhRIS*tb0Jk4^U--VNtEPsUgip!3Z1G*)pU^3?<+h1-3^oV1NMHE3!CHS0~snf9q(#yUs@yePdW6 z{ec-6KmKs1Z9$33THcm67V^}vIX!`-+r2|hXe$^JT&Aj)Kj2sw*vq;x=ks2DYxe*o z+d!19ZCP@BSi6}=LgJQN0PAt3qAf03Q>nXN4NauH> zQ4Ui3t*}+3@HlHLeiJG@LrPn2E`YVwgyq&{|v~R-yC+;wFK_pUp$XpyUiT?lg2w!zdtQ`$;O~n>98^NGv=#E$(_p{ge{60MwzLnkq`>`^`(uLEYFQ45|W-0_i+?( ziL;|y_-KAazY1;Zu?``c4=q;!Y%t&dn)^Z9_!*PXI{-sYcZtsp##rE!( zBY9h#=r?8TWmSu>E$wLjxa1RJjjX%|eE4qwqx`9IQ502wpIGVZb{3^idPYXZ*R$eb zw8sMzu8dEXFw)cON&5BKxIfT(gmy9k583di`?g43QZc9-d)fpCZ&``uRH}-u(!B$D?|~*9|4DK;57_Lbvpu zYSi&fT!z*c;TS9spgew8reM$&g1qkM9|BlNJU}Ec38FR1DVPG;~QFdY$_JK59kaSUcgCo6}72a zx~U!7rL1EMH=``x9L&)Hv~Ui2>ag^i+_zCA+z3z@;!C$Zd{~g}q0Gs?MBt>oig)`_ z@oj|IK-T2)HqO+~Xm057hHzGMp(rO;1^U>wbOR2^DOMuQNWb7TAD@cst&*ed8;2q; zyvG+83_&u^Ea3+S9yz%jH@)(uaTMu^yS=W0G$?|#6LXN#Y$T2VCIJK5Mx!$o^#TRe zc9DG&+3UEXWxI@-zV1>LUbPA`uvpUgZoFa`fuK-CY$xCqNC8J!Lo&-9SCW5fEvBX0 z0RWzRedsKb{+c24F1dcS!%{%j!7jVRIO68RGcZTs_clYXB>7a+zWc=M-&a0&>OC;* zbd`f9uL=weLF?hcO!7Q~H;=lPj0A5+BP|6q65>-E%p?E<&igh5D{2OfxKLRKy~CQv z#*Cj&k%4xo?nohp!eQMlXt82ZrHrX8FVprn$Lwa2pgRtrhCq~|Lt2Dsz6?jmM# z1~i4!V~={(_yT4YDMqP!_1ZMZNB~^=sAAS+0U91y8mz6;WW)8-Nyv;8+6Cg3!uuoh z-YQN`t?}@fGUFM*HF?G;UKJCp^Y>&$@E)JJuAA;TKgz-QuuvT^01n^t;OWTl37jaJ zIPllKeT8+1uRm0QA=e^@Wy6NcBm)P&SE4(^qP~a)L|=6a`?3+RHVIJy)k(jMoyP&X zQ0S?XfjTQBAt9z&wIq`WGE+p4QiXhYrSqxqaK6$BM#;U};qwV7 zPgX&WzyOyK$E}_4Ha^MET0Qr{y;efibr@$@+EGz?G| z!;qYqk%Eqzh&ni<$PmtanCGgu{J;rE^Ym=g$o&H!5(|1BD{H;p2sQvsm?w}7go??* z$szGJ1Rx5@#w4Dd!F{NJ599m2RZvhMqBKw{IT~@nI*-_r%V25w@#WnegruYpS0*Ot z(2aecnPFup<$9U3&rDG%&ZAphRB+W=b|W5){{*a1fIhpr7y)!K*jjS!2V|MB{X;|T zKvtg%y;xTY;tF1TUdqyR15cAzfSxgDPRMcOsv_Aw0Tm^#7JJmseqe+Ieo9@mt6IyW z%fpkMX8O%X@|L)PNd%z{aAgJughR;(0P6@ijW^@3UgD_mL-E*hN8uVY1&2{ff(;RW zYYc=QHpP6PxgcAZmlvi~z|_Q}1lk;Xf+-y52SU4I(dplOF-m?n4vKQzaJ9-kpjo72 zoB9rjM@MlhZ}|QfuJr4u4V@t9vIKjL?sY}n<=3c0{|r<2!m89h`AF)XT{2T4cpOob z<1Hvz=^F5kwh`S4&VsKf6V0;B>e~XMY$`f;C~dnDxocP4Ny8QKDrfJKca0U8$-O%k znSDtfF7$+8k^;db34%#C4v(_{fEETXegG^jE^ZXZFE4+Kc>7RfW^$XuSuP7Y#`U1u z8gA(`W9kyZ8|4LV*a_I+e1ufS0oM?H5RUuzfRmu?_P)`75zmqU3}`+#NjuVQly!cF zWq}FsbP45n>-oem_6#E>AV~V)%!qZ)~Y(??-d#<17#5q0>hP@T6`dXHVz>e~uKH=fZ4tXJeB9|kGR zuyPM-HAPh2_)2rpJk>s1TVlH9J>y9qJG=Cc%pg2AW!jvS|C{Y67oRM@o;TxY|mZ%UFve> z^69z85g#Al&?{F)VNB_%JmrndVbo?tC^z3?7(HNw-9G$7>mbpd4)LuEZOS6H=kXiuu0*H5~@ONfJ)D-8rx&rh z*eqM|$MkUhQ~CkbjcmK{JRfs0Q6SE70x?HaKAX3^Wy>@ZJ&5FJEwyf^_oD{Vhjw*r z;J6{YQLGy$4;fsrnaKn9H4?Tw(fsz&C~Thl*Q2NgMi~Q3An3ZpIu#n1Fnoj}P$wh> z9x(+NYIq7Ua0cOm`F#V2I=Ez=GSr1SIM-j}$_M0Yy=7u3Q+Kv>)5@*P@s^B$V3=&Cc|f7*A*(;+BNs|MGp%+D-s#Ej0*-1hq2U}naXwmsZr*&_P z6{@X7Ev2fa_jrsX(`9wQDJfIs{Oi`#8WO^vKQ(HFM~F`1!Yzk~j%b2s9qmi?~kVh5Z+` z>@&MuvHz~)8X3ZN#GGFRDD150tZ7vtJx42%j|PM2RtJ@a@r-b8l8M&$K5L#?)Lp}w zB*i%DRdYndQM&mF^{OZy6&M75k_~`Rm^ttx9Zd=9WV|8HMLMe95by3RV2R1_3&C!l6MQ1aJxVmZc`R1#aBkM-;pNS(&n!UPI62wKPBZKvt&CgB}Xk zW;9V`9xQ6##fgkWS)R|b&q4WN1mr8A0h1@|yIj2{Eeegev#IK-A`D$msQ1w~$6F0A z*$$~rJ~%~2O@znF|ZUauxc1F2j{OB@XaCI{CUxhbk@FJcau?r}Nt}GkN*AGf(0Y2vtcE zBoIHx`TZ`}4Qz4vnJ2NU*C9NHWbLZx-X(B2iHg9X1Bs?8~*R zLhF{AX#B4S$;}7)6PJ${+QD1w4SZl#$oVdI=t*U3Z;Y&qY1~O#G*o}V1Z0IOFU?Ki z?c*1#s8@Lv=ZQ}>jheYA$9gGFe9-RB)m!?pvD|&5%X=;^6mvM63sKOiw=AO+_JY`5 zkSgD15rbLWlEgWLUvMt9v?qXRZJ zJ(y?=K)2m_Wg<}oaAN)}XXCYFmT;qAAV?u-I()kbO~wt|C3Q zGgNOH3VGx>B*KWHccQWZ<)BtUsH&@YlbACz3~T*vf#hj=CZWo7<#dyW%peX$(R+YWicmt6DY|%J9IjVvJ%KtDp)e$>Axzl9sqh>>DfFTT z!oPJSeu{!=0S~KIR-?M555j{to)Fxy+bcMC8BDBZNUpi)`jek}s<5(AT1o=3TpYc9 z2uW0N7aJ@Z&S0*Ekaq=9Sv0UlE!oksiMwL_i z#-F*J|Ew)nOLXT!=#U^aFe=*BQU3udG#iZ5M92((Sq>mkIYWy}h77>X(57}E92_^l zh?4fvqhh#YwEl>_D(K9*QY>;#p?g5y17y4GFMfFE|0NiUk;XSJAt^ zku~lXI*8-=Pu0ph1d9nt{|}QEC|jeRZb~G}G|%A7yVu01Q~v=@4#I6CB$zG;&-Mdq zjt=u9*0+%&3T3h<#6wxTx}kQ(AXqN=kwJ;39o#O1=`ep#6OcmHx`9|JoUE)-jyh6` z7a)e3R!hv}j#8s3)Xq>&kOXR*F z78Z$RvA)=EKH8MDMuLUNb)jc=k6!JvF6{4*Zd=lOfRPE?`5QWcLX4c?Xgo9vuEG#x z5)8>OjH}j}>rPagn5pRn)Hl5C2os2k8dSQ>Q$L3G-Qy!>dqmVhw-Cb`L6~1S&LE|v z0FJIbmt_==Mj6kl2dhR=&SHSzAvjLJ)EBa~4S2v{NK%MMjV|?M`T)`?qRQWH?8vdz zzzf<%=t*oI?5jcbu>k3g-#aNs%l~$QJm$~^9Eiu2RX7mIW}m+A-oj+hCgL_njs!{` zLe2Jy_4?+_F5SSsoHaL{{g5-OM-h~WppazJO@9w^yht780OZ#yBE|kAy zP71FOc5-9L6j*0A13-GMTKoyq;w~3GH`94^W|lB29C;a2?V_+6NDQVqhzATH-joyN z%M=t8NM8gV-mt{R7*P__IVk|^4Lte{|0lf;?N*Q@sz`LJP1Mz7u$Rnb zVN&EfvH?T|r1p4Q9vBEyqg%ig!?y@7K`4rKd4SYzKEI*6Ps}a)2P$w&>^KzLtc_|J zuC^o-VG^;xZ}ca;$4L7OvJDzuSnBTj3X8D4UfG*vmJp1ve^VC!2=f#_xEo{GWv^c* z_%%%d2VFqy5ojWPiA}L?hEwgeuNH8_YFTIoH6Vvg7|XgtKs2x2zUP#YV&`3#pwk3D)1T1 zcRH0us2VIs9Ke&EMPlVG4BLCh^gM{o!@vo(Nlc@NI^e~r>Ld7_cmUAMODYdFru81|9Wqf zyF91~EL(VVZ`65#i9LH_BseHX0t4rm$iRHuCv;-w+qkBIQjmcVU_~RS6Nm*r?^^Rv zAfz*wsbha%;~n2ncC91)%MJZ5+e~C0cv@_B?Ye?A2J=k}Lf&eN*nBLc3IdG>eBAfT z$_Z=?D=(vD7kl{O`FML1B5ltQWBfi800XG%EHU+kfnNMY=1v1md^}0QHLhaa5f!K4zM0 zd-duvhAlWhpN4BT6C+W{7+jaF1@7qy%M1Lq20(kv*RQ^omi!n3++Vp7`l0o}rB1}Y z9>*zGg^hIObZ6b-Sz+z~M9j?6s~=#MfwYlx@!~S@=O>B=b9mtS`4WetoeUroGZ`pu zzCBaS($cyTNh;7e7t5NuxiRKxT${ZZW(TNovQS5Sd-YC+*I&s>Zky7lmozYQXn}*my=? zf&ZMO)8{9@Bxl!}aGlhJakq!nEt|zjhLCxsLG00MTMbJYW9}LZWc>#ARtP zwvreBmWfGh#&2Z;yhNi5U<=Pd1?w~nBI1tW7Li!|-|=GbgaG=6k(T7;ll8(QBOMXx zp!#=dE9Q6Os72nDvNDvD_r&C66u*Mz^uZR$#{d4B*syJX#e<3cF9>HO4LL)xsOVr1zojT(U z_Vq592EmJvQkD7s>xU~wwYD8HEr!+)wcD+``kzoH9Kk^e`~1;KTwY-;L3 zw<^5xEQ3=+vf7&ieti#z4Xhn`W!LqOy1F*vz}TG8uX7b?I}31-q^?f255m(!M5NHeuFz_e*W8IrVYS>mQ{3KRk-(+& zEi%Mqys=I?VAq_smf?Rc_z_ExKbIkXz#!7@QsWpLA|v#13D8_&P?yv$sN7Oc>O?hF zU^>)dxh zYet;?k@}>4jswbyaXGd(j-5yQiR*5CiLA11R_Vb`N(sqtO08{|AcB$*e0unmeiu`^ zd2XmrIXMoU4`J8nhvnGhG!jG}7;hpL*p(UX#V032l!VSexkv`kiFrcvpN~X^k9#WX zAl3-xlvH1N^LOAoJkp$cW8wI5{uM602Nv(yBt1XdbNIARNEI@CSeggqra&j-0+(j$ zw}eyy`Ov`C2L`rqqjvO4)r~F5&NfmVOGR^Oex8W>79!hK$DPonp(SoaWM(>X4PE3X zaN5nThb7Y&#l=VdbAUI>VXdGEB(|hB!jXDZq{5hqs0ia|Virw}efm_1T6h-!i|1{g zgfjRVr2?YPAcFHMrdytz_>fEyz`Db?x9*DAwrvd$?YV4zqn#n%i_;5pGcyV*)TWXP zVZ8b88c};_K|W2J26h_f-0+r?sAB9YwQG5MBbpM;#$2?Q{-_HnAA^zeD;%cJUo!r4 zg5m9a?XctoAm_||g@2M!jJNgm-2(hwx52O^a7X5=gwa~_?BZkJT}U7$Cj&Z6LllaY z{T@&&WN+2xh}!S(pfne35<~fQvvL*UWuuM^9*I^u2vC!fIzr zmZ8Jk|KM2H?Sa+&*7XAuH7g-BfP9b-VrqN;YGsZO2x-YbpNosD5&kU8xmpt>ORW9f0`HgytvWn)q0wio85aRmWR&mTqzYw+_Zc2dG4J`AmmF>Pi z1$D61Yv|HZb-~?H(Y_P0iUJ}uaz|YacAq&zkUaFABgmVB3|7vVjK-+dB|ZnY^#m~m zS&ZePDRlzhTR-;6AJBDoZ}v8SeD|Xix(Relj9ZSstw7WA5QGkyS~`>?>z2I$;@blx z66rSFKa@Jg8t%ox8$>mph{l%oFa)S2Py>Fl0gg_}wX(9`eEX~SKX@s&OR3x0&FIh4 zqqbpj<-TY%G*atimH=-6Fc2jLIS|6Qmzlf$RC;pbMpmn+#a3Ss7%s?N8;#_qj9+{0 zpLq^w@@v2`uIjP*#QK+-gonymUsLjWsKpUeLz+Up2N$#r4OwB8qDc`>sAKQ;uPFQq zQ4nF)F%4xkDp@~#0g+c9#$C}_Y9ZGAdEn((Hx`if=Cjh#!+@4Uaj=N?)U&<+rfTN6 z=rMH;PNvS2C$}Cf-yR6D1I~oM_I-09(^SD~%>?vr*jOK<+4&iT8@6P6*4=RHcyi81 zsl-DpNsR6))g+4A_H`5yRI(JV2iBE**TLx6<^2Galc0&v`!M;syIb*Gsgsj|xL91w z9W?(l=wS$cg#gopsP_m=UDfZ7u1L~QL!s4x!qF3^blCe|X!hO~=FG)dX0tEP(#+$Y z5C)XVmBFYwdHrwdwufGbMWuRQevgzm-(%Ts{JNp*!{ALN=ee~P=s z$uHuwBc1OuG0E|;$c1btxaL%rWPHee129((Z z`5{Knc=k*kJlL&Y8KDO8F58pCSY}V(HclCsY!dH%lk@uZs?Epw9|(DdzP3a(0(gY- z<`J?J@f@*`bwmm*L8`ZCu3*yWD*yZXP?DlTg0UzR@sFfl`Zpyi**5&b9U$EYiXpaJ zJoCRw0;hve=^lRlT4cIhLD|Zu!uwYmsjV9kw& z_ah>le(K+-k%&CUrS-yuv{dak>`;sd6NDDwbgSQVT6XP%6e@@TqKN@Y!%m@4YC$!8 zfv-1%84CU_bhJ((kfe@_Jv z;jDQTg;P^rdn$vE+uUJ??mOR6@d;Hdd^qoxNG=<-x&7jsw+KjhVuJ*D1$1B8@)sd; z1Ye?DH6#taIYyi+&oNTlw*NiQj#13`^_@-TIhjeX(B_!~e?{A^*SG9(^807|2ft>i z@0p$!D>)(DQ!>l9MJ8NpFl6ehadO2rX^_*va!DW~HTj>Zz`yp$sDO_bu*(3$KBRRZ zCRqUaBwcyk5r#DLjKRV#55n}@^JhPEBoS@qc_Q zx#ytb!SNTm#3YwhVw(Uj3JXUtv`N@o2eE%+`+!6P<_IvTz8?~kHt<1!Ck=fo?@vXd zBquB#Q03&d{P!h4HdR_$#VmZ2JboA!yvC{e_iZ2aEfi9Cp-1p_Ft^`~S1D99g&(Kl z(ZAEqrx=I=G0U<2`aYNGQ0K{2Jj_N<_}gVtS@sC>mJ$cU@}+MP(P6pJ4Pff2kllSc zUv$Ejapg$e&20knB~?F6_wT>k?s+a5!YU35PI?LRI-8u2^_KY@{q~CI+xVVHjkau- zB;^Ud-vy65i(mSD(Ld3fnVrvNnUN-H)u)qTa(-!D2+D6Yh-cFV@zr_x)Fx6&)Gx4C0AI%$}5eo+Xcv>2AB z?FYCJJGm83beG`=cLdq$pRut65CT}Z)ou`~t&5G|bJbZV$*H(|MWjg??8MAF8#X4` zrE5>b{VxCe`zlOS{zKX_Ewgg(dp*{|@b%-@kIlU&PF$l~>h6l4Y}@7i#i7(UglzVs z@j!FPqr^EpovAWaf*srxq0#C14+@K*;37k%LU^R2rxCM5W{G6y?)R$y=_N;@U|4`8P zIqAob0*)5NC9Oh74!<-&v1BKU)N`}$`^lS6dHrhtvw5>aWw2m~xQgYbjC+!iPG%jP zprO&tc>+!F@$}@l+vDndhiYxBJdYVg$NIZ_RVzQ)lh=BWsIV{+!DApI39-66`jq0{>YoH#)=l6U=oZ1@Y&#n~m5 zT1CN*g89-|UwC(O<~fwXXroMY0(4Yi;NL%xM`TJ3BfF+Bc<}8sNxD*!Wqye6h5D9D zP?UAuKX?PrNigKItLCmjp*N}Ot~NJ)I*#4;4AF#LVIT1f`u_8$)7w#jTrz4_b|&G# z-=(-X{cC9%HmdQn(`j+WtYlFDFlu!Cl1+Y)^~Mpjd75W@7Pbgv;SRt;?;-^by)-`V zLwWq?eD14CSDd7r`PS9V?!GFxK_(@BlblcZl`BICLpV`Jc0UXElz44jZp!8&8}+RC z(t1t-MXlH4)L-SqFkd9Ouquq=Qxu@MpABv{`*ZM$fL8bX`HtLXA z#7xJ;ah>YES3izY?W?eQA&^N-t#z`jIt8H>^7a47DlvPyVdkpPFu_2`x8$f^{YhyVZ_9Ak)8>L6rE%u0JR_kZX$ zq^Cj_f9xLmxGnOQn_x=5X|BaqkN$tVelSM`n3u@SNSpw)4)80Xkghx+Ki4cx$lLr$ zp46Q!JpBK8sc1epgY(?BFWd93x0ihHf7I)$RZSjl%S0K*N@K6fSX^S*&gV1BIPW^r z^c*@;L6OO+OXveOq8^pAE^=9VvYchHedLjIU_)^HYa0#38gx6cMHBly3hHXxnvHgx z56RE3lXrQ=Efzln2#fR)=(g4ucaQHAg2tCfzQIY>L%{0|93Mjl3J11w=t1E^e7+$S zSCnJ>7A2gV^sc2_glW2NaA>vVUjU$#U}D)2k3=lDj?i;TZ@MP-6eOcL4At*Q0yqJb92^ zFBW|i42|L-Ioxzs%WSa{3S+SXZru%77Sv8~F;iM31njzYbgIA-3^0?1q znnol#rOAE{j-l4{ta}p)QTxn$LRm%E5*jtBEcWq<=|w2^G1iE`PJ8w5{28q~_HAK_ zhlOXLD)4XTyhETgJXNmaQ^G<{XK67v^|4E@Mcj$a!iu2YX~}-lxTn=gn}(*!U2T3B zwVZo;f~k%lGQbm9ISgoqTX_Zd>(b4`6N@M_AW>QVrxJl3J%?$qNEx|y zh;$U$>r{QW#?`xcA}2+OwiKE!jV{bLKZx~pak-_bLDc=+va!%TR(MC1KWwx);t*%t8A(B5XU_qx>QC;XSqbGeTU znb%BoCtEy|HVN?Vz|k#)!-tQT7ZlI-Kx~LEAYgv_Jf7+xVkxmv+3ePPjmV&mnYe6v zv=>{1klV;&jp8$NC%~<2>}*-YMM#oAu-OSU)9}ox`m3&&#ifEzWKa8PV26q~I7l1p zr8T{x3>zETm8+-sHN-BVVfJ@^r9}~dLfR<#+LDSgM~nsBu^3}{Sy|A8g68F*AiX&8 z@VGvxj}hqLLz8LoCXRS`6qwPC1}I_p2?T^T^o9zbz6W0@Jg2T|uk-n;z3BgzJVv)= zAr3&WWmaf|nnf8yYx>Yg6WlwnYov3X*Lb^y{(}uUiQJt_-} zO>{htn9^jZ4uq8V==#KNQ(|97K`c=G=dw~F!&+5v`4KoFNZ`s7GP5ADQ~}syS5y#% zMB_gWU2^2?D3gYOTKLPGLRMq7#NV#o_7oFqF` zxh_z&fe;f~^ctM;&GrxxxwS##ld88OswK_rS)W_&R#8eP;|4Bv$W=S4Q4vK+^bJKT*~ zRKtu@5AaK2r-2Q2u&jc%f;ceQz^F@`&TmgOT5BT;U131%yE2%n0qNTkXYmUo0?FWN z4ZUsv!{~tH5U`m?maCGXMLE_g^0;D^28FxaQGb8ujQ*kHm#+ZzICqRJ&T9YA6Y zcep=T5xokuyTl9v;D0^dh@_efRLQ%^F~?mZ@K;Z{H&jvs5S$RETx0(g^R@3a5iygY z(IM%$ootdK() z9FiXKzFbVkFnB8%NA$0oE=Rx)ksdSjke7-(uzW_hhC6ff{@FsH`-uHU0FJ>mN);Pn z$q&$$-Bj}BA5QTtFfl{$z7g}c2TW3$A}3Q!lk>pVb-GHw&X z%_8gNz*XTUy#h2q{DU!~&BwX|^*DMU;z&lI!4k|;z%Jw_#1#IUW-*^qkXV_WdLHp) zBm4o`ADH{;hg8YeqUlz3X%(&PNJEtfTPga00Sj_ccmFSM zD&`)52DJp2bE?YZUCJ9&pm=l0uc+Wh5YoPPVGGQ43X2Qn8kZ;15@rKc?{X0<=w9$Q zTRuJ(2tmSoh~J6Gr$6)3`&e*Z^TE>xB5S%nwZjI1%%yn=Au zudYX62h(AU8p?po!u(qL&5NpfGIawJX&zsGD@e$^Z^wQW4+L?74cn~0jhY${<29PJ z@E##;bNCkVUy@{vfSRkLp<%6KkD_@HzAq}39>7RM&jaNftook&PQ*8~{NBbXES$ez zVZT%y%uSZ6c6;HGLka}($E7gI-o}`sahN}WaI==P?1#*tw|?A3tLct-;rj87(}DY$89w7iI>lx{y!usi>hXo zkjjC!lBO3nz`ysvwlB}i=+^dw8yY#ODEPkPP=c)_DH2F``}1|V_*Q^;d$RPn@N7 z>1a54B_K|TAum%9_?HpjEgehVYhyPP^h4pPodQl8eii!O)}f9eksSd*NmxP?3_vKV zqOzQl-J2~5kx9YFi)ItF{U8mq&GkT1fg@6Deob2o2pF-0INU>M08JqIAZ{hZKSeO>$z2ND+h5Q~?*&P1>RG>l;CtAcC2*Oumb3q%UnXhDHbApgai8(0L zA4phs;0~cixT!R?F8RZvu4?@km+o6Z>@u*6U(hS@qDPEWFF zyz?YwF<7&#Q5_6B2O#HUGFsi}C?LD>pf%IOcJG^pI=!ZQ{wsD#1Tm@El?H`-_TA!J zxy8N{ykEBSF&j=o(5dj~C8v-O!uz6xBZe-*tsE2>5Zg#=Pb82UQ{Wqpwx1_#C272& znLyF24Bc@JU}A6NUE*&@l>4YLAY8XDt|x+5D27OTk34z5fU!MBUz<UxQw(~8})Wo4xxEY8c z|A+Vum;H9Q_?bQ-Gy(>N-ePeL{M_6QM-}vrF~30?H;L|n!T}#+1VFa@F&8Ob2eu%L zIV@r3WY56{wY5!-|0C8l&(cjcSVqR}KtB?zViXaecE~Bld`GO**+L8wy~SyC|J;k3 zr%Aj8$0F{UHgZ0ywxfzqs@PGG5#|}dIYMU}W(CNAqmxwLHDbYvVxIFKZ0aJP0vy{D z?(f9W@-4ta_`Kk@zL>DYP@(knx=j@IH8txMZDa9 zAc~3-*>UKS!R*Y;Cs6BRKl!vcG4{e*^X7s!@(KxLsKvg%eONtKe--izbVH%cS!9F^ zce&lIw4vxVs!>j#Fx{~&Xj~%BZUw(cmYm{)GQaqNt1*m%K~6C)_Pyu?WD7H>d0=C0 z2bIz3ktTt-28R{ZM-UK*mo|p0;o#|9ILjYG{M{k1g1c{G|J-(mm+aWQ(JcOrv?i!^ zFOUAZ*7^XdXQ!B>D07)!TLgUJ1f1jcaM9^F5dxvU>c9o0h$af@xN~gHd%SdfZE@-( zWH&u}Z1|KAfFfD0AUyAm-`}}@FD*d`DO(f{wFjEJCTN9c;jMHSg)Z4a@rd5;_K!3V zq#|e{3eoOps(pg$$_p@SF7p`Q!V5wLDrDPv;#(1xjc^{wSBi;=K7( z6nc6xBHA}uGjVdHxs3^ie&&TkZBj2u7;bP>w|{~g<5b1dllInZ%zvR( z!CP&@GvjRK-VOGd1=XbN&vgMFq!c%Fw1lXT%xb`jQ@Qs|F|=oxW+BUIk>#CUMxO_< zz=Bs6>2)^7y#obk<<-rqJJ7Yj*ez+&{s)GC!Fhw|x1Hz5YW3?7_-tyd??0f?g~Hgt zEZP^d0R)T1e}TaAZmj!=Z1uqZCGhL`vCQf~OBO&)2)l@THG&V>tQ)uBfc&3|)WA5- zPsKGcPLN6C5QkX(YzPt&&>rgzD{jI00 z5=ksX`v!sBH!?$jLYF8??KbKxBGm~Y(KjPS6FUgVYFzHJre+bw0MUYMn^xlD4nP+~ zGz-CU$uiSe|TuOS>R zz$@y+tr5fA{?X`flFnOZqM3YpU&4HD>90gc`b z61?`9&8tK&;En4>@T<3X%+}y}?r-_g3Cmr$#tlO^4-~}N3l;g;aUarKbLt5B1IlVQmVvC^>bG(4XyE*`7!Fz^hFO-U#skP9Bzj#*1-Qll=6<*81d^qr@dv$QLeNy!~qzD*JtEYHEduh2uG;j}`tQ zQ|k}D!sTVj%!L^?Sm4d`H+6RJW}$gXrY#}v@Iw|sAO^|p(hzBRNa zwjs4|9g2WLpK@}d3+zIACMvUd{=dU{7?H2#7TJK;_RrCln9t<;j~*>w_$Nh&`qd(E z7Nar5$c`-1g;L)hk}#{g7Hi9{)gVklS*3)`LdpkkFvsT>w?4QMHh)cbp5^fQxes8+I~A5e#Fk9kWdLR&Xuvm(-Klq zsMOdwI52FH|1=T}6BYq}nw(@sX^8dY(i3m-pm(DNo`GDL*q-D5DOH6;HRE#)GpW;z8FlN`@|NRZtgoS;~VIZiMKu0iD7T zqQL=3_Z^6-pzjESz!aXUgZMJAA_|_)YZ&%|lwlRb2YRpcIiVyv52Fbjgc&Fe<`)(; zVA}u^3%j+AdyM8GT3?>>A4780x zCKts#@%Vb{1RVnx{;>cONv=Ta$lKE8_pQ+MTB5GMxFaJ+mt)TbdX7Zeu$8c~3~5-GA= zp4~?krj1LnNB*6+%Zr8jw6@>%w)v;%O_>EhxHDGp1v!>`9OY{(m}ib9%h551LfqCg z#bZQOpX%cOv1l8w!ZlX71UtTAa?20Gju2fWJ4T-cAytcvLOh_L9M8b98UwD5v*z6D zsl_=W8Wcz!56j`wpgwCoxlTpXT%t3j*|~#~FItRw2@AAC&s!5EdX2;2P=RQ30r~T@ zuPnsBW`HQ5p)#LO)RW+ZDv%L%jX|(Tx3AfWPZSlxqNk-{ffknN5y;5_b`y;$C7;Q+ z9KgsKckH*_#R(E3n1eW^Koz7n#y=k51EmPd?)nGM_8$$w$4*DDMjkZQ&9&lpYdwv; ze7Oo$E8wC{cRD}2e|~YY3^X6Mrw0Q>lIUf+91&5CQe-3gb(nVWV;6dmp_IXoAK9ny zb|HhK&o&Q7B~RSl?*I>g*EseObABoAd|)dAbp@x7w(Ru`5Dx(G?zO6lg`*j_Lr;zB zTON$~Miq$|-B$F{Kz7(EcACTMgRH34v<0;6H$vZgxm;mar&4KHspyH>QcRhV2VM1~ z_k1W2>U4Y=7kGoK%*QQ-}yMV zti^Ib`WyXP#o+`D5hL%%If%1%101A85o`RXme8l>{Q8ZGavfO~te?$^S9S6BZD|;& zu0#;SM6*P33$8Ls0k$$n5DS=i!j^`B%R?#*&07Muy*N9;wKzg2_~9y@DQmKOKz&Q2 z)(gn&)qq2DkcE!OHReU-PclD!`4WjZKZq=FrxQf2T8Hn9jT}#}**2YOLWA+psaX(EFgBp9LUlr1 z;&Axz8P^n{ziR3K@J3LTn35I)80ocsLBjVAlL^R~Zmgm$y6vV4;j+ zUiWPs6fGN-igb44mkgHOiXA{oTF%78!I%i}^&)656*V>DomaIb9slp)>8UsK17#Zr z4jI6bdi>7}<_$93%t+ok(Q}xnlffeF=jV`+5JF+jd&mNzrDyaC{WO-6&nxb9S#Iv~ zkuRH)V=$E&Zw{2vsvg*cma7UthWY#4d914tf*U72C=StZXm0J`UPIjLc-Pw`=5e6L zIb;Wc2r*MceD8<*5;6rrff`Oe<6PLhn^Iaf%`7-5s{Art;LFm&fOeD20babhI`{J5 z7l>C|G1#LiGt9eUC`eKxla_)ADii?BPQ-N*+*YpKje(U=K6lu&u*PrNy47ahlDucM zxjL9x11s@qVuA(oKH?CEw`%f)CM8}h98YZ!+fvAFC#kHeu8tAqIsvaxvs^iO9}!Iy zEK#(s#BvsvU2tb(hldq{S2~uP=%}~MHQ`NhaC3)(Cg?}^Ap^7-M~WCAlRrtY4G4F( zbQuTdLz?)sGvHI|aGz(;9}M*7A6R~Nk=I*-Gd(Wa`W4-!yn{k5>uoAvzDV}Iyv6M3 zr|+XX8ST)V$$JTO3b6BlFD?~6N@<5T@DBcm!7);@}t%} zR~E1w9Hq<0+XZ-d!Y~jrc1|4xDpR;tFa|<0fp!Exj8Q*zBIJV|Afy8PP+SZUoOH0J zgLe^jUt-LRg>3iehpjO;N<=t}y9C$OciT|xRP&_6u>-cQ`o(gatH8HB@e84Y#oW7X8as0hG^KR>7PHl7Wv_azw~Ug zHO^Kfnz736Zaz4@X#!`;$jpokxXCJ@D5|K)N$yu_>Op)E@je~YgbNP$EM#F#Ie@A` z@9P${Ems7UW!ruzv=+;sIA8an&GIFUADs%T=rfM1>oPn$ak>mHJAEy`sZ2HlViMEU zM*z3vGWXhV&BZF-SmzjqP+7Z41tChZMg%K1>NjnMm06<0^HqA_40k6E!@EcY%`h_s z8+`T`>mZELLRH3gSr0xr0vH))Mn*)=3G_abWXK3Q2wF$QhPT=5)L%OGus16u0-D{a zI?XF(^PkuvU~*`8>^(OGgqg?$1gLEV)2j7!Q;vJC?l%?MG%2MQZ*t6o!>Ce;g009r zz(uQ}iH%b}@)KQc8lG0e=kK?lin@App@c;~J`4&^sxu$mF)_D$3$LP#KOe*!Mls^a z4=FbM6JztfAYp~0_pLv0pRtvqon;3-&b zD1x7;oOB%91t8&jG}ff;g;}mz)MA4SQTXTwb*+hsAR(d3^|L=N_BKQ*1&2QZZQTiT`fDJ7u^<#%3{6QAy@3#xv#tQ^ZO>vsq94 zjWNIAS>_jO(n@dB7c%24>k~t%(2Fj#t?m=qk!OebAo}ue4|*UMlrm0PPK|+{a{2<+oO6{_@(LYKm-cR}bAO^$)zyVk&Pkw<@&ol;7?KD0;1bZ; z+xKwL(6_L_xnYM+x95k$=j0JjP?m)u>D}Fze;KEQhTV6oq}pm89tIN=laN@~mkx?3 zNHS5QQ$dTZ{0p~Y->>6wQNOo+dqv1HOC}?IYmN?#C>8*3C7&Fb{sO8d7!|@p+JE_) zZV82BZ)8X{9CY-@>Q;ImJ{i;gXYFTViE!t+++Iw|RU-k?xcIC`Y@e~YTl8qP^#@y^ zyM-ZD*pFn_Dq66a;Rl>jLMw}GsUPYg@j=&f!fg8_XH1@`e#3?(A$$7?7k=#er6AT=E- z$$Df14zA4H!s-0P;HmRS0D>tGO|s3?;U_?94YFdukveiEZ!lbprj={wHmWXH!d?J3 z{$IMnkt{wvn{${I9sr`+%87>Ov1tSu4%iwUq}Ozi09WCh%)sn29fUI}T5$TCel>%s zENLs;jOo7R5TKH!Rnq|eiQS@rqQg$Is|13U%re^-VOrv3^E&pMnL#dC=8FP4Sm=6J zKSUb}XrJUJ@2LxsKCtL`4=1Yd(8rG-A2OXs&9)JCHexb1LQi9C07fIWhrw{j9z8(f zlOqfxv^sxZNbB$idEN>fCuI5&Xt`l=&x(r?4DwOJwOpjV09}7o^-Xr%&3YUJ%0)-` z3XPuO&8-4}K6atvhM9p5j9g8d9RKq4+WgEJ5;=R_{AVTI;qNZZeW_{!ziW3<4YSN9 z$>{Np;QsBV6TNS_p65rO$RTD_3u-m?C7Uj6s{O%xXJ?_ty{F)fy zL3R7XaR=9!pC)^Sx{H&J(HDP5eX^1TVs$I)D-L_ocG5H@E3+WF?1p_NI-W4ZEPE)( zojT7@{^PcLLcYp{#{&hmLkwTOVg)H3%+fU(GE>%N`}z4*z>gENIBf_1VDUY9W8_@J zX2Ju?3Ev%z4TGSBxzJX^Z~RH2PL_yA{pN&1p6*4H~GEQTMxa-sQQ> zYjnr>(Q*piLS0t<%8;D-)RNzSt96b-fi0I??tLux|MALY{5Y7% zFbvc(0VmNwv7mE>|2(S10R(yyWa&@cE4qLnh*xnD%*c4jO>G?=vWwGy{a(<_mB{D} z+g@XFX`wl@bSPpN0Gh*Ybw9g?g@cq^-@Md&pew>>Q4WL?N6%vqpLXKmshwR8DIt*NYG?=#TefUSri;w}u5Gw%87NO+8D{BCp z!Zbn5AMt3uK@UK}>iFnrJ*qxJ;s9p`!I}r|3;*)kXo)G`&C*buhx1$n+3(W=Gj%PJMBFZh%4I zFcl-c($3AOxRmq9XAUtj+b3;*s;a|R2rqYbuBr{gPc;{|+A|y1IE*N{29!c0!uU75 z3yFU_ez!d;l^9)(>lA_COGYn&X<>Yz4#T8Go{IpMM)rnbKn>ME_ICw+_C4c%fPO>I z0ZMy~%hlf4*eIuV0#g{MOFhwiRXxEAR49#_I8+UZ=AO1)B$#NFMUkb@{wvaR#Go=xSv@f>^gc`)xn z=>|zFNrAZ?@)Lh>kz+j>X7u2u2sk(NMh8rd%Y4zGNKhE&BViLc1IrVzu4hWgXgH%Gl7o14cT4juk2sOn~=so$bdk{8}56BdJk<+a>&8;=s&7IR!fZRV9<`K zQ{bb07I#q+*6es-p%0+?Y_+)3HNa}0-171+HQy+I?vs%j-qMou@qy(-zs90DCFOF! z)^Ua(BBawtAA$3REa%eG=THjfo=f?@F)S+XmoV#x(Kjh-UqPZFSunrD#pt=CcEYe) zeA`$tzA=;=F9BPW8SmCqTYp`jK;*H8H|^|>3wJBXNl1)Jcuv7lLPK5snNRv)ouXWT zL|ON_`;iN72q$+7&Y?-!^PYEHW6tQ?rjW1iuw*3vyPip@`|_h|j)wU51gWJe5I-1f zAAmt68OSaeJIo!YhE!3dbZ8P3!z#_!F@QIsJ-M>ljCkqJd<* z5zGy%pps03Y%Z#&TCDKch_Q9D=>VceP5cBJm-iMx5#sv;kh654*4c;|er`ES_8=*b z@ow9=*C!#ZJxW+zDhN;{nRlxOSU{EzQDk>R(}4Szk&z2PohS-9mjNvo9uBccsM?Hj zqkEB$lHGrwtg9kO45efh0i9+z!c!U!C8fmBxbMNC)S(3kqvE&)XEw6j3>}5?EEMnpS@eWM!!S9ibTb15uzuG$ll3{R zGY`mCTarRBOVBN+29aF=m7JJ}zuW&-N^H)+tX^4ScfFgN8*xa-9wxJ?5)<9}&SQ_K zw~{(AwJC3~^d*&IG|&t2LI{EjwG$@41-ScD`t@8@DgNbnic{uO7(CsubP$-j#8aco z-_sV?YOhaN)A)VdmN(IAE|ZcNR+<0s`Gr{%7ndTUV`Vb)iWO3NL>p=eMX78o;f}~8 z9VRGuXs{3;DTxLEX%mquZ}P16xc8C-5gv66wKR5j$3xvHgh?~bRgStY7MTbkRe;qK zSQ_y)1h}|%DSi@&fcTrKF<|k_mes0Wp@?grz^jE0L!Y5w@NWxNl`3wFjA1oFb*Q)C z&SJ4kHEekh@&;UpLAgIH=tH>`>N*clC2SZ{I`-Fbt(SBVWy2f+LU6~!)nxWYmp?j! zu;DX4It}dX(~jJl&PqGo{jW(JDibf-#FC`Qu{-MQg7VRCj(AK;?um>n8055hmsDKsnL1+Pet0pbOd&%0qcYgqmSi_ zw}l){L%{s3sQan{kl6@*!}Wf>{8;frCpq2O@!wDZ%H_;~rFkQCdP~<+ zvSU#Oo<`YYWsXqmM9JG51ZU6lIVKhCBt`Cj&ZZPVwEcC~a zAv02JEkS63I5@Ok7f3eS3KHy1{sBHBQT(WUmd;kV2i;Xzxo^mE-#tAqjJ}o`NY!=C zJZSrDptDMoHIP&6s0~5iA1^u`OBYXfS510GJYkr`+{bNr!xG)ib8X$HTkw z%Pp=nzr$sM^ci$~S5^-xtMZMBNS)?#}ngTTBrg4mS#mlK%0=;ng)JT*z8D zQkcS<7JH#SJ?oeW-I(w(aKgGh?jynkKLih?4YE0S@FAucGP9D5Hk4xZ$M+|>mJh{A zQ-@o8bTmGQB*k22y8w4sJ zuUTEHytem=TLfT2sbBrKi#Q*iphNLWhjP^Tq?zEsh=T{-Gq%pNy50+x(n2X4T7F&M z@%a$F1liV$MO6I$s*G{)dJy~Y7Fo{&@JDe;i5St}M!*^QXw}bNzUyC=$vk$YE1AED z9qlsm&iOq}u^$R(kZe2KUfNRAEfT%;^o!?8UZacy14=sKUpGiG&f7HesC9PE^tf|V z9^bMw3O^4_O~E7XWIxyi7$oO^+(tMT>UYA$6Y0cVIA{L(NKK;JALZVJZ%=*t64ma@ z2fMhr$zNfV{NBdxYZLMijpn3W-rx$ompYs%SQ9te(E^MK2ALF)pmvjeq;=7~_I{G} z6qmT9{|>CA1)h(g9;|a9QemBY2V++I*y21u8U~$KSV0~tOya(fF?CXi;$)c!FzmeuI+;rQY{-MFE= zMtz?-jg4Nq`e!n5z%6gh4QCJCE;e8(^6%fj??-P2uyc7M?$r&4s1Z~rM}Cb~WP;u% z268g{^7siG4*cc_;xE=IC>)r{0I=VW_h0oU8xk?>QUQ`3gbr#D!H=S#M!dHEpkUBQ zb$avTKFAbVMYgX(he=HPfDA`Mhn)@_mS5G&A!C$n`SJ=>^)wW0YnDw;PWJcr2cdrw zkO<81-cx$|{?*kCCnu?tl%TTb9M3j#Tj7s(@}WR?fm%P8i!{k_w)K&4_Ls7ES7}Z!r}{bH?|r)Aa`%g^FFO zI0oxvVS6`tLs44Gzk8-e#zjLofkyZ4jpQz0n*+{N&_)?Xm%AFS>ceQ7P1+tdr_c5M z8o6OUbv|?%H*4o229b{dg{PDrTfy{U1K9R{M1?8^7}|U{Ivpo2KM?@3!~-UDbGlpL<7~m)=o=!wN2n-?zpj0zW(fOFH{FYR*V6-*qPFTM4!8c}s0qdy$)5&B zi)T&L?k{dlQGSF!@zB>ZHXgWn+gG^z!}f=^$2LCxc(3yq0LM2+{BOnjJhGiQ7rQnt zvXyaY?%v`TxjTzqv3inh#uKHt+MVSN7HiV{I)BLaudP&^9ZCZibW#Y${n%xTnoBbA z0v1yScpp;|1ARto&N-?v-5goHp07BvC9vfyoSE3O9T>r0<+TQC_O-t5_}WW(nlZ zCr|b$ui@Kufns2$o;*qZ!pz;8b(>`cV^P=h$I1oHD_ig52jne0KF-uo8M2l$A3)7m z_X80Spkeq`no@C*qVQEQ2|Qi~}{sU!CG&HjhN zwPza*yBQ(RM$4}nE_u#tXEz+@#32pr! z)KhdF%I*w~R055J)>6YJ<#e+?PD|SzUBNc&ez?Ra#yIxyT$*bDX&1{)ag}P`3xG(~2lGuc^ijw^@Bokzt z4jO!D`IPP%j)$R$Vb-{3+X2or4_bttx}IZHetF6DnP?h*#>4OTH^!Ap?VK%SV`f%N zci6ES^sWjhb*p7O2*pGy3h#J{JWE11%!EvB7ilhwVuk3m}))%~+mD=|f+G@%Nq zqD(+XoW?QVzbIj`t3?3ch!k)DSJMD7E@x%c0(0ZZzEip5(oIoCYW3cG13fG6E{;pp zRlNnvvQGOU@7mh`t{Eh|#|Y;JM!6d4$qX>?(znJ9;52pMm)~_B#RR79Z!)`qq2ioYRRZ`+PfMywq2zEjhiUnywo`#Alf5`ibhY6qXm->g7a#kYub!&Y7UB~B=4PI;NQ5xYPj7+(2l9tVXvBHImet^6 zk!4Nrm1V&xT}D|jv@$2JD9??dJm{l4SV#5mEfs9y4O&=Q4@Vs+sNxLe7m13+ri7EI zSg^6_|5C9e+SG|eE>g^Nmu%}h=O^h*Kd_E+=&hFU1d^n6Z(J}A1&Ub0iLc%q5wk2o z<#yNyvBF5Mn`tTSPu~iS!nTh6CU3$Gel-W)dT=9ecLFoUFVF9)Na=6F4vj z_wJ{!@^n92GN%DvQsA!8;<~k~#zTC~8hk|6GTEHEy0$hBAZCW1X2u*H(@Z-hDZayk z2{Hmo3^T^G^Cv&<;PA$l+k?<%yv!PvF-;3PbdELV%?yfdyZ#^O0bau1VdHf2`y&^q z0=k`ai6=}oXw$X@)!zF1$7~^;jb&$C?l^{Q{C<4Ct`~JHna>cFGs-1KFvDobb^#WE ztPZ*oW!EmHd+WOAUinbJjeI6yrfK&$qH*Q#V7*3+Gpq(+6Z&i7SYEDHw)uGpDDq;5 zG3my zSYlsf|B7;;_n^-(i-~7~8Uz?n0ckr{?}s)Idm8cQ`lLd{FbBA%Rb=-b%!IF?NgF_p z1iPXG7|on#T?cQ4zY8OEWv011Ip=aq{qMF&W~@$Y9mEF*U*>doPkTvmG0D18GY{TG zJ#p#Cg#=~=>V{y=^ql};Us%x_O4!}kh#UR0)qMM9u@EWKGfY7#b5ogs$zH;`;OA7| zty0!;$He!y)4i`@Ez=KS3zZ{gYWTA zX&2B->xb4Sm}UW@TxgO6@Er(f0kxWuSmCAfL^6g~a}kscS|eIe3si+0l}Y8D*SQrp zJCd+#_Vu0Rhv|cQrD7~=EOD-t+P}uLk0iVJMf4OA-cYI z?+z?|6ubnz4thj*Ha|T1#Twr+9V{KRF<4I<1S8pTM~a>PFlW$>`HT*|bY;y|G(I%b z>Pnlgi`%lZMQDMkB7$G&s?I|QtrfBrNE?c+U~o04d1{YrNPrF2{^b2|1|mAXOy1bYdEFtr*As{RO`#6Z2Y zFq!8h4+FTohJ%Ac@H=d21*RbmoSEqOg7?fKnQ1}MPr5Qt36~#*^Gb<}(*njJpOR2b zX^pQ~s0ix#d8eO>>3N=tE`^P6s8+V1#77&x?Bc{RuLF9`fi=S*{%YUphrzF_x|Je*Zt@3^LX^R>dN(gzh2LAj^jLz^Bha1gHZ84 zsX8bw`*5f)=dpo80vCvQ_+DfCdC8;qy`Gc6WT9IXB|Z-J#Ue&0VCrs1E5p~&fSR9~ zRNA|b#8^$1nOBgxPW5r(UVlWr?lkX1jC5c_hb7Q?IWRH6Fy2b9waMx>Sumyf&OPJ-&svvk!&11>`ujGL z%8Muk{ls0(Uij=ci_WLGAqeFWVyJLxl0pYXWd0BW4X~kYzXowHK)wIOYCA<@Liv~L z(PDsTfDcLbkJ{#i2Ui7Wdg=c6)PpTYh-w)|*+CD4GFuGORFK6#4GltOBO?Y{DO3%) zFu?{*msP*WQxhX?K#nCw+VmE6v<(Hv#UlgXO#-RotaNYshr3Ea5`pFcP? zzT1rX0u0>sM9l~rZ{9hw*k4E;A9Xgn3flSJXv4f$`basy?#_2kJD zX&K24#hJNZXQ4h|AnpKQM}(_^z=oa@#P(=`$QRZ066DV=PTvBl1@O5Nd_GWST3}U# z0mtrRgW_IG+w-WSh;$3bau8Ha^e$%E&M0j4@6j;CQ^KNZEB-_9<&BIIxyj&CQTDI| z*^LD)CSFw2O6&s?sS1*k4$L4lS7+AV$KL}Yh(k&N4~Q)2Hh4F%Zckw;(WFYksh$Rd zXx7Rhlc2;>1VS}{WE*FUl7On$=%Qg*-Ql=h(81)>v;Ln~yDF6!s5$89L5TGAn+raup5+q`^Nhcu&%})Tn z53%|*BCe&C6(Ssl(?F`2mwTOu35|7CKzHy!q?ie^IiYXB(*(dbA?=Kkcpi89Qyk%o ziO+@Nhxl9@>XjS8VPVHXjX)nzS{(K*xUu=UYW;lpwj+1}Y;+_sRHu-ao#*8bBpBkcn7O{1j>n zdqCv|4+-}H{RNEIjqZihHd!Up6 zgSnnv+wgK(a>|A^C`0|1@io(JuBl zVMc)_;afuO$xjRcfFTlYG)vh{M@I%>i$)l)1;5%e^pzk!o~Y{~fHF2pacu$a1>q*4 z13(3S2M*mWJQIQyKmix+rd8Sm@mw=!)P`VbZ;Fo~6C_>~3zU2L>#4a5XDCqU!y|GY zAQ(;@hui+$D+IShVueks#mT;C8Lb_n8a0gG0(W7Nh!!)lD8Ldrgnu^zcJlzZoJ8yl zRWDjD|B69*>>`2(97*IxyujQ)|5qj{VyMeOLce^-M$=*c{pMx#jwbrkqqe5|-_+4* zx@jV!W*@AOtZgYrKcAMiXD~d7vs!Cv0)fdf&I>TY^%6}%P`1YLdqrG3DUfA&NuU_+ zYkQWW0jAG?DSg|%eTzY(2^?xd?Yji7fkv3X{pQ`aA}YE~V9OAThx-g}6g46Pg5E|( zP96o=O(QJUeoqLD)&No4MEI-?P8YEiCqRM-0~~%4W|$D?iHK@`7zR7H0@610IAW7_ z=fTP-YLVZqR!Gh}x(2|gd3BV-;Nr?y13Xwg77!n2U zB{q=X6C^9V3JF*w92g#r#5aaXz3McM55W^d5AAY9ZXk1Cv5RVxM$o20R7g+&CTh*P zX& z51&n3PgJM~hAoZ^i~#}Gfj}-QYVl|YrWsnV<47Wj>_Wo0l|}_E11^7i8-ilaK3?7} z09oGWs@dI#kt6OTK$S}DFNjyR#O14k5hD&Il%tG<7z9U3L{#??K|UhVaM&T}waLMy z$BE>CBSCQXj8x3R8MBqD-V$mu5G)~5QvuFI;60e%1=9dT+{pFeN)vJ!Z74;yY}sNC zyE0TeKsAJcEO=aUbx`3=-ui4Z!rtM}w@&jD)hWVZ{WDb1GK~DSIz=5~Hxm^RIOSl2M9?O2lc2c7o87phTh# z$;3Z%LU8pUU@!-l{U@4+yr|A%A%GOPbL=1*yYE6O45AkyG{X_Huo0ncwEXs(m4~N) z0Dc!WPk!jORY~R`M@5~*6GP=S!fYfccd#6Rpd3Wb{{(i{jZ7d$E&OT^x}5jDZOC8; z#Jvck&;DmxRSeU~swU_qiP>Vnfpc>OnSKD%Alg~{o3Vun%R_Kzgj!A`jGyOOkgVn2 z`!_k(AI?+rv1>6z=VHX`7_?#~{#*3fQ548MRN#T2s2bu%*`ia`kzaWYrXyY!nqP&a|MdLxCGQ^N10Ds$Hst~2}AS5It zAuvKXQZ{gQ|C&Rnv?(A}^*USjzmx~B40A?l26<*+_=&8LppM|YqsnUe&wrtD3^A~Q zu(&8<=H|-UScA}c3DN?Bxd0|(^FLFL`$&)i1=0HqcWU;y)oxG}ZeIBdi-a-&aT2@)r23$XB+)k|EeLGE#`10lf*@(7njr5s`x# znMs)Qo4iC;18~M1(E);^&=;zb)KFiYKoOKsb6_}?K@-~|IZ$_M{MQu#*J1K*6%`fX z2Ze|Zg7@PU{MJ|ySKxQ3$JDnCg#`1mBV~71zh=CnI-;b@#BOVV8%vJjUk%vl~B9X{IHbq& zsnGu`g&u7R`L7fj3lhWBa_MS+DJMYuV<<36K%wAd^_yx47!U-&WW~kBjws?!*}IGV zw>rmk<^b>LeJG;P7x298uy2VF9N;-ua1GQWd*?0JAH0aLRqbfn6&rS&fK%*1RdZ z@u>HV)}C#*Tglbv?Rfq$P*AHX{?*eIB7+doV(N*bc?U*{FlO!!eKscKb^Vp=1VaT` zFvHQ%fIUx-kNf%ipU&n@u{A!{*HUZA-Sv36xyfU;>*}afza;4#)FRH1(Ys6*jzQ*^ z*gk3|4vPp=nCwux94KD4b{`B+ilS3=M=&fy8qw`&UWeHa2me*$%r`&s5HieGP;uXT z^r!(1C5cY3kFKQe<>R{p|N8Uhy~HFk#jhU&pL@yUKq#ju5~edp1Sl;Q+h~G0DCag@u7>+&gyKv*!fD9?fM~9Nl5FB# zexGCjtGxTw%r`@f`Q6t_H&(8=RPL0CLwv$gZsJ%$!GG}JS0Y32{7OG9&&Q2(Oddg%;+SkU!ezccW_DgXrTCPFal62BzhazIwQ&0qN@wb1uK7 zLET2Q7v>S%7To4iBT=&22#`cNH`LRr-h%kpbrH4_Xt7tBMq^_ zlm_3$m#L`jrqbNYgXr{K`zH=uYAy5Jk$OKf(&Gof-1s@ow<;BLt*Z}FU0t@Ie z$=NsOMO{|^6xp>HOyaZ+FXnNX`(fRW+g%jD0r!j_7U~lu47i0>N zAlpPIC2?hXy}+_&W@eJP)%ni@l=zB%8sAO)mPh!(u`-{(Urq!K0%>_7jV7+2Rg<<1 z;Tv8em?zGw4XP(c)9rqt1Y-;N&Luh5pXMadadDR>OBVYqj6+mk@8@IUQLSrgk_MMa zLf_2ug;SvkKQC{UiQCt6qt7FiUVjldqP(&6JWc00K|PP`LR}b?q`OXXkMC%Ty)lX< z7wW|&YdSoZXo;-U7EKw4?Ow>u>%?TqmO{pTpXc`hASO8gyU)T)wgXObnfv)U;Hx^> zzJ2>DZwCc22N$*flD2*97DIgYuim2kG{c;ixYK7c-xxtYDl+@|BzOFq^bZX{J&65I zFP=FC2a$N}oj8w0yK4^53qp6`P%_VymX@{#5gS-vv3U8Y`}cK)ru>SpPg@|}(16#6 zd9t##Wfq*o;@&i#)lyW2 zSm4G;j5X4-qsNYs0a*}0ps{B@s(cx&`CouopN_!x%=SwAZ}^B6|NXeA+6+0sdBgrVV~oo&b=AHVFjy$wDxp8Y z{s(#izRB^hwDfFjM#EldE2xFvZvQ2cs~|6*fJAM;xls74F9$xo3ZU*!%!MSTx!;xP zBLtTSyF#I2O_HA~KC6C5jrCRau@o{%Nl8L>i-pD<#Yo5p(?5(0>+0$j{CpPXD0?$H zrv;R3T&V%~BB!F>>KJf!*a0$7n}4e6N1k~SPP_{Yz^HB3TtSr;$o7CA1YY=!`?h!J z#}AD)jt?ecbaZrJ50Mfl;==EJH@*@B(m@BA@CvHDQ8{Q1jx;&}$Oasgum9togU!`F zdo~^ti1_&UIk4^@JYXO~UjqXJ?QuTcheBDqr`w?WtwHpve&!6(Sq<$Jh+BUzG4V8F zb~0Tm%N>M+!j=o2^-OKA$5RD|giO19;@ypu;3JeS#8jwwBNC*t$1%QO-6$1WVaIAl z{Rc+Pzg!7;^(42i3S$2?BY|zVa8bRTX~=9)_xE|e{F;pkc#gbj}sN^>kUL05y;sd*!?RmEc8d~wD( zLF$%>sDBm{2v$qXhWyba(K9}JJHhOb0ti&*9)_Hl1qoy-z7EMsA~^nS*s#)-@%?@n z|8*jg>s`vRDyjzt!Arr`hKb&jg~bcsuYmHOfGJV~js*<8kSPDrbsW_@EZU2PQ%$*65d8iaP_PHg^?bYmUnuV ziYl+=VA=e3qc0t3g#`Qzy3t^g_axC1k_aXMfrSbrUB3yC#>+P`qio|5T&@!~b--1w zQQ`eQ+z>dxs^32}9P_|~m!B-CY=80Y?Q}oD3}kQ%#wBo4)rkKa^bTb-6Z4oO3a@ksXHCg3mPeOkXCKqHo46CRlSNba5$r($cm}l) z6q1Nw&!zcr>ghAHK$D-ttFTyRii8ahTlHQ4v9rfs2D&OC#3VxqG;0PO8M-|@alloZ z>xP=^_pC>LwMu!n*LRaGJK}2fbdZzxEzXk5M1zdS}Pp#kIAI?-?`te&fiz;F2K?JF^3;mRv7Yrrb36*_K@yBquGsOmXI%CGnruvQQnAG z^8GMYG=UX*fu;v9zI|n>%0umhKCIf6^un4cspJr~i>E|XZeGQj zV`J~)0uq8;uvv*4(P8Rg8X~jHdpPRk^`*fe>bZAih_IH%lsA8QmOx@^=D+TS#JdTK zCP%r)Nzo<6)7%cl(}Afz-#&A4d{+oNo?tWBEVo0pJi9#cew=~W0eAhN;17zy*A6GX zT4BC;czcVncm)CR6DPpT>lYt3=T_s0aH}GpghUk1j<@E5OLl}KawLwP19#ufcz%CsVKVUF@xuYEk&%`NvU~puNHg?0;VhSXUk!%MWJ;WmNpD_Tv zqiB{To++|_e^{i_N-$92c%okEDC=0%i@m;u;MT&qt!uL~2W!G8a&l1R8E*{z>0Nsz zKE3ju+@v+r(0{U@-f{=#p;`f>fTA<3sp)i!dOtjr3QWY|?0Me>KY7wIZl9Rof zr$qF5-Q<){pKgC+Q07-Mmc)P>jwE_OlzXt0D{n4qaa|v{ajfVXP)h_! zq6cgQ@oK;VaFxgHLP~~0_p7O^KP9lbzHluSGOdt1YJ9nvMM4}3IA%liRNc01n~6uS zTS`hwD>fG$3L5S(n;A?jz~;)~toug&22H8yO-5-0wRrK76DKH(WJHInJ_OY(EwF1Z z2=P$YE7k|2!9d>k-jIhi=Gc z=HGqW5&bK^!gQk=YiDvk+L}LU~+vua-L>3 ztrDi#-4O6`dh}H6l<7Hw7%Hr12=iFR0@>{a-6M%f0>Ckm(FcC{qSxm$OHA=R2}K{) z;3ATL08EWxa$&*Bf?2!MhW*y2Pqrw3L-c$LW{wJx1p?%-$DY;MA~5)hh@4(qEP4-B zZ7Vfio*~TX;j0xgVw2Y5!HgWi|-t zsx?dgI2RHX4j5-5x`R*h7JHlP(BCIB&q!OQZLwEZ)yl?361565?>~9EsiAoy)Oc)w zRYZIjD&pcgM&|DCM=v07WtxwQ)~)6F(Uy*{&N|zyIeY6Pmi6yPJC%E=t8z7lNQoq! z@U^9<``Vhn%9IhGc-n7u!XdG9meDLvo2i~mWZd+?ou7fR42DEowz=OOk%@_kx>LVg ze!YlwMq1~H(1D)q^%QN?>m!R;OCEHmDx7K9U$`>|P=8)o2K6B5kxFWH|K z_S#EINg+*q>E15w-S}n zr=K>|g=gY8Bx$bkU+Zn$kPl?gHJXUrEDgWKo;o;H<{h4(*xz%@DS0h?9r*;jaBBH5 zDW8)p2a&(}y-f{Xy7l2$h~8dQ=R_7=LlFc>%MU@a!_qj z{}!7LW4v4Sjs35=)MLe~2DfLFFHneL+9?1EvcIuqYjWy&-4`prljyfG15Wy zTXNT0)q>Va^ycL}hanRaYYyqjMcRu_*BbH+?VL6SgSg``1|F2YgFyb~Pd`n3^yrkc zb2g2z*};bl-X899-5VYfUA2q%nElIYxL)#0ld-` zg+{h7?(x<1>~Uf8s&TIz8>>#pH{H{)Xj*iTKE&RC*}_KYfx)HCW$rM6LkIBdZ}Fs; zO`PYItETN)o^ji#vzi``os7Tha8M$$U%PSc60`mISLa8;2O0qyJp!VWVC+!xmFS_~ z>J3##QQ=68aTBX;;zbnePhY+I_E%p?k>}WBk8p{XRdO$0zNC~rR;r_yXq=G8YZI{6+QD~fvLHHC84DS(CBXM9b(sQ$02b$cNdWjs5MT_@u$l%WPXR@R72%B$hA=V-iNSbXpUP1C0; z!cP&%1tLE1HnX+1cAERCL*g~}vjPDsi@ZD0A$k673w!J1#6%)0Cnb39K#+wqr!0Tj z2P$L-DcX7JlkUu6;<{MdceU^Oo~$0XbvLa;`;s>vhrhj9nWtpx7cSnBGG=_g9t-LT z(`o=&Jt!vp3O!sN(@0ERrmLBwV`4^y9!Eu00GwYMj@Bx`%Ql*3yngaZ*5P|@2#6X^ zHLSL+@FCl$h`B*T?gYtKd(PEw$2zlQ8e5zKua(*6T-%^6HB4v@itHGxn(8k%l+o{& zW#+q=rF_b4Vtrl4@AAa&3hp;{yV=1~?&@)><)pAkj*dQl{yY=WOBVHO>kr-_CY4Z& zHY!u@6Bd45?4YIMqeg@iE{HLah?A9f*(QIgq)|Q%BnJtDB}h_$r;=;}JBIpk zPZiJZ0^bFFTgASKvoSxBW$v;6^zHOYvPbZ_M&@&k|IQHA((Y+qKK- z{T7?wuVhGIs5A*oQH|na&shsk+G%m*nrT+(wZ?)D$Rvo_pWyVWoH*gU&}BOt>A!Xh z(3@x8X6L0Kfi#j!{wLzbmLp2KRKZ+N`H+50fa9cAL81Fc`#w|W2ai{`Cp(f5V#mzX z=%#i+P%YbPe>L|zMMOp}CK`-drBH}ApN!}x_mz3O`8nsUTy>$~jc~;yMK1+5zfvhI z#6;t(J!6(7i8fiq0<>??x`9Y%QPi8OFI7#k_<~?-8w{6o1qCxf4gok;i(kt~ABbOu z(2?Wk?QXE1b9Q!CSdZQWuIbGA=0S+zsdGg(gMOc>OBE+sD?h*W+nRrYQ^Vq&+QOIO z=%UFF)K7Y5yOJZwm~1`Hmk*f;G}nI@WmTAdsYrjX`*F8;zv%}3_jbcQn>8hmw>1@Y z8nY-@5pBC|k=v64JroPcMV z2L4*|o;(t{9y?;)BA;m_JW5GTWfo2-o0sW5CG_ryn0V6x8 z4HD(^w~I^HF{6KOw0`RwV_bq)o#bmv8ZXB@2P_>f_2rh1JruXtEGMVAem@jw(O@>QJiQy@P6}ygt=2+sX&4{H`8Q8d)n_i zN@25LBoVs7BR32)O4k>R(WZ{HXvz<*Ow7xIdguy6lGH}=`$3z^1a+Gq#%BnJ8RxWbi29+OcDLQ3(yuA49E+aa z!;0t2`Z~Xah^}!p%TFn^%mR45K2G!-Kyk`=c=gkTNdQYCGfG^@E_a?b_i0LYLf@8` z>ag*r66N!D%qo=4tO?FGPE6LY^j9B7y{gKaOYcsLid)D!@s;7njeVF_*A^E9$D;uK z7VHUC+dICUPj{OlVkQC)M(Z0oCZ-eU&4cRsQ0eOA4`j78Bp6(A5uKQlBq9E>Mmg<8 zUr51;lv{>B#-03DxAIhqSUl(4Q7Ri4JNf$T6RpK3VHO2X{dbOcI1dThZm#{@N|k0w z_sj3Rtj-`)h?6E)v88#INA(}%R?2IC$$_g$!3^$`mVSWdnP??uX1-DfxKP5fW=FHa zY?E-;F(+aFn!|?<#fXVWA zQ`YCBp-9!Y9<#X5;2m}Oqhw8-x&AQ~GRsBg=dvGMl=^m!iYSNilPm4x{h$*Nx!-fw zHNS+C{aia5vVObz-hcFoiejXb%mEEiymiLUcv7EIfk9mlV4UdTh{XVS>1ema_zR5?A7fvz_ge;aUaVyPEjcah-F9Lu#NRL{ZWhn+W>$nO~#Xg-Uk+})cQ zxf#jF^DuOyJ52Amo19iTE8FkI;b-otL0j+I4Ru(mEmujGgx0Mv-%yTLY&>eU9u{op z^>8y{?+6oH`|a5f8jQOp4fOvAR(p|Bbu5L=Ik5Wkz)=1~>6G6oF$?3( zyN^Tzm#zDConowYriz)jhF$rcJp9p_j;SNYYpmpn{eg$tpO`9xudT~$PV_hrIjXh| z3>nH+4xJJg=Sk&6Li$zD;Oc(11wUrnOJ}(GnHNH=OcHdyD6JlSY;ayT;+`Oz$r}G) zUQ0#(4^feiS3I6oR67i94VfAAtJW83e74XHdRYsJr*9OgSD)XCLk$GBxHf2rBT<8gIx8P&E!_YH^)@U&1ev)H!X1x;100 z+g0WunX*q6pK=^+Q@W@{nQK_WyYE*1YC0n~(Q@qiW z(@jZis0OPmrP6nA*H)YB|kVUAm$>p_;+~j6G$|ra9OD{S~TyAM)DB%E?|x z!PjT2wk?hCm;EiW%8T0Jz&CxLlUW(14BoUtcj%~Tg~~*Y%d-atgPt18ILc9{d&muH z`QJRrb=c5MljeUu3Cd_{%c`nf%4M6S!_IHccPa1Nw{FC_ZO{MwZnkrLJR`{b|9(FC z_viCW3yMVV^xj%IX$DEjfyMs8-x+_7CdE)FdTlAH8QTBfK6U*E_rgHaTaneVVo%jr zDawx@&DWO7ziF-guZIMlq_+InB|`C`Rf(5??G2%Eow8EX$%&j>|L5CZ#^nk9)lPND z;eF8wpJnSo`M(Q4N!M48U%#GtMY!~3r~ZY|lHdnNa5VHxuFI~?XDmDyly@(`&$lo; zSV^ugKCS#;FT;X`tnvq`f7r@V*7c@Nui(PhSPOC8Yj)vxg0B<2A)GB9ZiHk#ZXKqo z>2EM-0okgUUv15n$unwqP*kU`uJHp&3gW{2&Uv^_i)s1u6Z=cRIy;L}E{~-*svZ#Y z=vz)$Wye0c6^{E$U5gg4?yUOg&xw?JQ8ft>Yx>?L= z?}@Xy7ql}gz#FO&sdYdS2Rb3#p($! zoNESE1~hN=5KGbW(kBNL4#$J+&18Cn_}njyr&P8R6s$D;w~x!u%#SlB>#04IM&~Ib zC}u43S*Thid2XTzPnm8pfh5@vtAi=EM!^# zX3RJBGrQ6J_xaB3>e_=0{z8og)G~kTEF&NKkiG8ISATIg4-sv6!OSV-i|5xgi5N-) z2uz9^-+%sw?O-Ug+4a3!57PVZw|jf1a_|XQ6l-(sS})AHVqT}EWHIdux`mYPVIo!~ z?*&YfkgobW;$Nb2PWALW-B!LlBXE+iJG6X^saZotqKTRUfHt&s_wrQhhTREfc=PH! zb>4YB8r3|bS9#A?1YdtW_KuN9mkk+;T2|=gJnbv0^V)iE?ilTV9eLJR^o!A69&5t( z3F&N{r*6zHnEz({)kx>eaGnt%S_%N^_I2Jfw!-y=Zcm`)U|U>%w>wG_fn4wd!HlnD zUyO8m@w3A^_*i0Yvq&SE_7(hH2yr^}h+;TM1p`FE2d&gA(j&HL1Fb|dLIQ^Wkr35` zF7phYEh|ij%6<^{{$;)|+7Nm$?Eg3zz<7OQI#F_tuBh^0Pue6VnAAduaaqUbfe4a=b>O_7r2B9Eer zUj(nO*ttbAq>bV(=-GDXSE@2se0#^JoK+`2wS9qFy!>6hSDEs3a`=uS>Td6;W%n}w z^*6mQ_@%$(uQK+-$rnA$QV`Wck>QEmS%YE&QGK4Tae$1*FR!{UwI`cT^@UzY6RXc@ z`Pl2R>Q^>Y(sX*M@q&4uLO<_=<-;7U8Oe$#1bC}Z;OW1`$PJDV`U{@L{0sMOyA#@4GhEb zq@tu*=-+s(Su`@VI<;50!M~O^>XbUMX0F}W{x<9{Ei-zYY~3ZLy1tg9c#J0w2D%?ii=Mb$S^aoZd2?Q#V^p)nAoLBU!B) zS#o+g|2xRq&>*H79rD+_o3_Utx@PnuJz49;i;DS<)itgy?IimbCH6Wzt-Q$nyPPzc z>kZHAbKzl@;fk3XOHRrBjO~Iv3-`BSgXmPOu5-!i%HEgY{3aqRLJe}{@k_b!G zlrtB$P^-ua)RqqREluxcI{);?N;?3=7MB)9=84N&Y8u63*Egh7UujSD+OHPbjGX$} z_M)eDE+71s`>>FV2Jb;^>+@YSg_EcRk9WB}d4nP4dx)MX;)XPph>_l3-!Jf=k@FNV z6}Kj{KCGGsZy4F4oLb9jE10#1L_(~2bt<;VSU28s$6TE+L#U(CBj1Trf*1vcqLCDs z`RQBB3!=BJe%z`83#d} zVEZNlsK*b(&=6CKh}u_bbK$-G4DePn(cg9hG*@~~&NJX+6Qzj>dNxb*g{v*~)!yZI zj)?50lqR>Qa8F(-mF)^zp&#IS!nJ$Xny80o(zWG=L-nSIc4j&|XO4G>f2p)@g1g47$;u1rtWn@D&Ql0105}Wq z^4>;!7NTlOP#c+POS04EB$TSbORYt%T@8F2@FACFY7*O8lsasJZav7d+;1I@3d1L? zUOX5PfWySHu0D+L)usF7>`cbJI&oFE&+CnD%?7|oTM$e@XAZ=UxL~EF&^xqc1&ZMq zJ7pf{?fZC?h(Lv$r5u#1hFOIvLV1$|wHS~iaF6Ch96$`Y;atOlN`sA2zP;%sZqG<; z1*5Ec-wfap&`}Lu`Jkg^cvp5ci+ss}Mdq9f7jab15>B^kQ@i+xoAEQ{F(?*I#h zSgWR7!ZDt{g|=&dQI(y=y=nu2wY>D$Va&QYW=*v5Md$N)8Hc3Qvc+38N_9YccMt+h zV$vAFZy+2h!PHtqu~RHJ1N4tJlns^E{vJ2;nO22NiF64;#`2{G2FxGZY!c<(r9j?P zVP8VhNgggd>U)jUo=S=0rTJpX22cOWhr*1qa(h~#2#G*IT||R|atMCnF^d|fyK>MG z$uvMVqA&8D_q~u0LH9QX3avt@9Gxs?M7gw`Xq!QZ_3%O8vR8I$aM!~a&>H^tw!V4`5m5DZ= zZnCdV_P$Y>=x^z;o@&z&f7hy{^15VT^dL`aGMYyK1tXt95zP5?#&16 z!RTNTNnUvCD!9>h-S6MonnE_D*aFd#!OsGe7lBn5*UcDjERlTi6#loI7V>k|@mR9njP?P~DfkwZ37dI6XWI z;{Qd0i&5Xy#49KF2!$knUOv8uSGajB5JJ(B#8@*HiAhLgHFZDCP1em9uYCXFp_~5_T>tQvPK$(-fXz&R43e5anN1&W0ctt-kkq2n+Y*hs_ zPD{eU{kgrUX6#Yo+UgiStGKzVE?wt&ot*wC3v=qJYAy)KuV={wPJr3<)+N(&6IzMr z`}dC__=Yt6B1}FQC&el3!y!u*aKa}oEO>BtM*p!6%I4ZMs9jfuLcxN@ohAkl1b|Q| z2`{;eL$(~2NO1(bIg{Z9)Z#9ppo2PXG*Nbrx!^SN@b7%b4$2vR2cK=PXmZO--`Jm+ zoGCrx)73BLbc8LF`a1RM38Rq0Rnb$hABUliFhn;~5M6B`h2Rws$N{@SX=#9*gka); zh0~}*ZH#AwOF{_;xi_1c@BBHW(4KRjPde!jM6_3@J&&GE?yZs-873$5F(whHRJ?qD_TnlQ&mnbVMP_Ki5lbNN{F6! z1zXQv=MVMD1v%)3OF>CbM$jDIUMTBhIqN7#j8#KknWQW1?s@~h?1rnO6`t6^@glrtgzN${xs_5L3_dU=%5lp*p`&#-;i~t{>XH2hiqv)N5 zE)+LG_~2~$t-#1xY${}#nBk+E$}uljv;02o=Y!`rLY+1&nHJH0EX2Z}twzZ|Jk%Qi z5W)QBR#=_LIURT426Ab<46=Gf{Fr*0%wPjiF+$mxm{x`o29JnHIC?;%PV^D-FJi__ zl}I`WZz&(e z%&wPiF(K!DaQ;9tZe2DiGMHTex4aX)@v7?T&*%?G6!|{M^qVvrCC)WTwKyVxCjw4X znplAs!g-+7`t0MX!nqgWPNg#hhn~>zz~`qxyK`HX<3^-JX2YO4y8fM$tf@|O&hjX{ zN$=fgq4Lfs^&F5js~8DVjzNBBHVsWp8>nANAp5urzFaMzOZ$5>I(g-{u@oO?B7%osSOXWe8B+w?^ipU2WTy)|MqhX_R;KQvx~n zX4+X$j5ASN_*dR=lf1OMs%pzdL4Lp4NOY*MxX?DSq9&>1+D8gZ5ILPwN_#aU(zwCC zBbV(U@)UA^6WVQT1kkQ-#oOcSF`zlax$D(A>cE}UP17k>&rcpNT~%K)bw8x=_sBqm zKsCEk&xWzM2TtRmGdLk)S|*F5gj$$WjaMJJN$z-2vi zO)<`01tUzWadbWhFPF1BboxhcjJkgBN0n%4(||`e?NT^WpSeHzt?v^2wImZYi++Di za9EjQ(e*nSc`V^j=9Sn@Bk@GdS5Td11icd6anHl|ajSfFvDBWCC=3{*LdAPpy=`DX_ zkqf@()KN}(fda;d4;x$=Q%W9OJ}B-A%oy_ub&%g5=Z6lf#rq%TU4|Z`BAoSd+ACqB{6M5bS+x@d`n-j%a(}LY z#onjS>Od!Ol!@MQ^Idbi<>sIBDI=0oMML9n{!HE5pZ?cZQ8ne%=YeaqhwZu~uP<9) zALI0X-Fk0#U4yVm^RHZo+!6Q6c-!wT!!(?)Z$A_6e*bBbUD=L~L)JW5dUTkf^ywq( zuIZNMzyjIT?elkK#?2Vdbw%y_`^^|J4(lp4Y3=UnFJDD%d$GP{w70n;}5s2xj@v#i>=S9>&w=aeD^?k zbdV|P6j6Nn50q~yf;j+l!E8E=F{<7jeU#2r($_qxZ=m%SR ziz-KAD=%zr9~>mjc)4`cORjiT%x6tP#F!H8P{ioDX-q$q-(f!HED4~k_z@4!!-v-4 z5*6vUgVkDn7daKyrHeO}3VPkIsH$Ix)D##V?tI7WzbW72LW6>J!Aj`VL@#xV0(nO1 z<$T@Y>i4oS*2)~aSY&r|T_=%q-(ldUsv=D21a(WSt;+XBmY>z?5(w?;8tD&e-v-O| zK**gsP>*w}lv<{DOAt+L;%SE3k!x43k}wjz<#87tt{IX43Nn> zKCyVmPz|{1B+b$=eQ@|(uV1wXAU6&1JK|-z#_T@TBR30Vm)2Y^^?vtQMdgZzK#Avb zTv8QDJo-yR-TZ~_R+5%@SN0UT%Lt_@I6F_Ae@#K{lb|>3B)4~O1=mu4=F_P~aUR`} zUrNO5vY@MA_u0CYeE^MayY(qxD)=k`RVDc{jkYX;ZoFVS9;rOR`rNfwQ{^=)f#lB5 zjK5hB(Y&#nj!b!t#5RdF?uU9k%=0eJ3Ge$`KEBELxKn1!r~$Sp002drQd`>udk?2F zSKN<66UWKIzg@OB4ktZ$Ypb=i@>?=8E&krB6jMPCPi_l2l;sw%HJP$7sK zxBM;*VXrd?)>mwPE_H5K$%kMpbMoKV81IQn( zL8Q~u9|<{F4!Q|~fTzF{2&fAZT(P1FNzi+&XkH~rRJI#QQ2gAXLVmH+sd&qh?PMuG z$@x-WhejmLXJ$lONX>6 z{Fqh}HQVO`7BJC|fShv29^^GkOV{l`{NhKpxPL=~k#<^UACInTIE%zb^W>rg^x^PK z8dJRd<<-SQS3AwYLWL|KX#`ooe(mOf!&_hW3U!b97bhBvO-(y)vyL5(ak|B-cdQT$ zuLR^AEvrIl5dnu$Fu6JZX4i+ADlg-q}`K*N8nlD?LeuPXJZef%`v1N8>c z=xr|@wvEh0#8SR=v#`h-Au28dzGMFWXptbSxA8QHYx@aV6_o}R6uWf!{(v9|ZCMhH z^4dKRd&nKpPn{So^J)Tm1y*#;m_2X@nI zVBf&CfsDkfE56Lv1r|Ly+#9Q@j;!`r6P$M%r6u#IDO*UKk%7d6>kH5V0IKB(<|YZ{E{;01W?_}Fhdi6ya)*b~^lgEd%}?vU$oR>_0`ddA1BzFz zBe#^+d8`o#2T32EjO>8;q9^ZPLHDq4SB}K`bSqslTw7b6BD(iSKx;dTzz`x!s&a@^ zD+w;+v8iPMcf7p3e}Pxc{(K(k6{8g|`69gRAZ^s1t?oA1yz|Q$7Gq`3Md*CgGDC=~ z@M0p|iTNaZrD|_1$@7fC?FalCB_ARkY5) z>O_}a2&#;-ydn+V2%DX^n(uZdQ5c2 z8dCN#!@du0S6XI(9j(lJz&Pn3nu`)nL%xnQ)+qO{38|)*mMwq+iUxE8<#x`vM7~DK zQRkZ!(p$E%)>FHG`Mq)Ss*7c*wZGU?&E-Y{Hh5=E8!zv;1o-G5$ND`1)G1_~dlNIZ z48^{Nti`;x?pq=cYx#iAMi@^&@2#cMFf8@oiV9&+%!bY1mEe-5evGBR&c>lwdt| z^oIMZ(2piZc6N3o5RpUixK3s*+ITaLrRDecPRl*zNvuD&-Z}Yolq9Xt+Gw=9qla$% zL0M0zPfG_|<#Z2g2)Z_^si_H0m#81*tNw5%;ZTxWKYV4^^5j`!S}5_REE9%_W)$Zw zYd5-j+-kFG)rafl=fy8)cV_$W(`7oOQ#m5XCi`K%{mVOR4HXqls-tmVj4_42MRAb> z#CZa%B~+6+Yp`mft(-N_k5d_xab@Q?k=)8EQsk^I4fU0G|CmK@K;1<7(n3pFp5eNZ zhfGd@;K23?rn{RKTH;=$2e!mT8&7g~o{j%T$<^$U4P8!0%yMW^=c!OPi2MJ)5_MCt z^ya%2f6DEj$hb2LGE-1pwjK87qDmnx$~2a~AD}WJWSv3oS10PhoXPCny5P{M-YCv=ZOQ zTyiv4jAAl?Bh2^Qvd$Cog-@S&vNBH4R3)8y?_K(dyJm8xjph}_ZIbyLZ)6XjNxReg zOoH`iXm2(xWp1v>iGF`&sJ8ci@i053Z}b)zZv$wYED{!5Fqo)(#2ND~PT~+^Y@m`% zBsWb|R6y^FG})y)ijLjezL0L*>~;Pu((iPEEWKi~&Gj|%aG}xw&fk~za9oN|^xLOZ zEFqF`I2x%R(clLnhv3lAXONqnek2`&RtRYn8Y-IXF%oPP{5 z6YOKdM=&ME^5idT-};f8QTvWAatktNSeQOwcewpUucbGi{H4x5Fl-!u$|VISZp@t# z;Q4y1{eO&e`#q^2!h7E205=K(7x8gPn`(XVY(31l{qC|Qz-9n%?d?vFuZBe`Ev>BY zD*V*vRO>z2E#JuEdA#q#a{HTxoKrR!czAN&0iL|n{bH@Bb&d<8kD)T@ImY z!OLy{)uhkcXkVhqLDY-by7$ez=hgTo(`QhEBQvxc~5uLeX7` zNi%oGl)XN2Y3VCARi&$4pcYcyw%pC>onGFX*-L-Vy38pa!|?g}ZS|Q!l_{x?_xFAH z`TSpZZH*1EFXZXD@BV&Z8)lg|uy6QRMfKpLqXC%0Fd;i`P5?t8^Ze3p8q`D@Ox%__a{FtyUtp{JW%#Z+HL}vHn zK(Vpe$|Fk3ZzImmNCcjuK3DhD(@pl)K!x?wqPBg>wFS20KpV?~_PV;uuP~*IBLu9Cv8um3|}P=6dt==}S#dOK#ncuiN?e z=FjW<-<+QWY+^4vcw0&7=i3{M!OIT;`wms6GL}I*eD3Z74j$A7S*DygDIB!&7Vwm) z$ju4wVj}j*e0!rA13cQvs>`%#3TR! literal 0 HcmV?d00001 diff --git a/09_plotting_files/figure-html/cell-5-output-1.png b/09_plotting_files/figure-html/cell-5-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..88e637b2818bf4bc30c6124d00f297ebd5f391b1 GIT binary patch literal 70498 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 SSE+X>c<@SExI6{(p#K0@Ft_>u literal 0 HcmV?d00001 diff --git a/09_plotting_files/figure-html/cell-7-output-1.png b/09_plotting_files/figure-html/cell-7-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..924e9a9bd1d6cc5ff6546402894f16c3d7302845 GIT binary patch literal 121040 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

f6> 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 o@h=t@ED7WP&0zZi_@% literal 0 HcmV?d00001 diff --git a/arc.html b/arc.html new file mode 100644 index 00000000..3c84a35a --- /dev/null +++ b/arc.html @@ -0,0 +1,965 @@ + + + + + + + + + +ARC environment classes – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + +
+ + + +
+ +
+
+

ARC environment classes

+
+ + + +
+ + + + +
+ + + +
+ + + +
+

ARCDataProcessor

+
+

source

+
+

ARCDataProcessor

+
+
 ARCDataProcessor (config_dict, arc_dict)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
# Example usage:
+print('Example using dims only')
+config_dict = {
+    'control_set': ['dims'],
+    'input_set': ['env'],
+    'dataset': 'train',
+    'index': 0
+}
+
+arc_dict = {
+    'test': [{'input': [[7, 0, 7], [7, 0, 7], [7, 7, 0]]}],
+    'train': [
+        {'input': [[0, 7, 7], [7, 7, 7], [0, 7, 7]], 'output': [[0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [7, 7, 7, 7, 7, 7, 7, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7]]}
+        # Add more entries as needed
+    ]
+}
+
+gp = ARCDataProcessor(config_dict, arc_dict)
+info = gp.create_info()
+print(info)
+ins = gp.get_env_inputs_names()
+print('names', ins)
+inds = gp.get_env_inputs_indexes()
+print('indexes', inds)
+
+state, info = gp.get_state()
+print(info)
+print('fitness', gp.fitness_function(), state)
+print()
+
+for i in range(-2,-4,-1):
+    actions = [i]
+    gp.apply_actions(actions)
+    state, info = gp.get_state()
+    print(info)
+    # print(len(values))
+    print('fitness', gp.fitness_function(), state)
+    print()
+
+
Example using dims only
+{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+names ['IWE']
+indexes [0]
+{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+fitness 72 {'inputs': {'dims': {'env': (3,)}}}
+
+{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+fitness 128 {'inputs': {'dims': {'env': (1,)}}}
+
+{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+fitness 128 {'inputs': {'dims': {'env': (1,)}}}
+
+
+
+
+
# Example usage:
+print('Example using env inputs only')
+config_dict = {
+    'control_set': ['cells'],
+    'input_set': ['env'],
+    'dataset': 'train',
+    'index': 0
+}
+
+gp = ARCDataProcessor(config_dict, arc_dict)
+info = gp.create_info()
+print(info)
+ins = gp.get_env_inputs_names()
+print('names', ins)
+inds = gp.get_env_inputs_indexes()
+print('indexes', inds)
+
+state, info = gp.get_state()
+print(info)
+print('fitness', gp.fitness_function(), state)
+print()
+
+for i in range(-2,-4,-1):
+    actions = [i for j in range(info['num_actions'])]
+    print(actions)
+    gp.apply_actions(actions)
+    state, info = gp.get_state()
+    print(info)
+    # print(len(values))
+    print('fitness', gp.fitness_function(), state)
+    print()
+
+
Example using env inputs only
+{'num_actions': 9, 'env': (3, 3)}
+names ['IE001', 'IE002', 'IE003', 'IE004', 'IE005', 'IE006', 'IE007', 'IE008', 'IE009']
+indexes [0, 1, 2, 3, 4, 5, 6, 7, 8]
+{'num_actions': 9, 'env': (3, 3)}
+fitness 2143.0 {'inputs': {'cells': {'env': array([[0., 7., 7.],
+       [7., 7., 7.],
+       [0., 7., 7.]], dtype=float32)}}}
+
+[-2, -2, -2, -2, -2, -2, -2, -2, -2]
+{'num_actions': 9, 'env': (3, 3)}
+fitness 1975.0 {'inputs': {'cells': {'env': array([[0., 5., 5.],
+       [5., 5., 5.],
+       [0., 5., 5.]], dtype=float32)}}}
+
+[-3, -3, -3, -3, -3, -3, -3, -3, -3]
+{'num_actions': 9, 'env': (3, 3)}
+fitness 1828.0 {'inputs': {'cells': {'env': array([[0., 2., 2.],
+       [2., 2., 2.],
+       [0., 2., 2.]], dtype=float32)}}}
+
+
+
+
+
# Example usage:
+print('Example using cells only')
+config_dict = {
+    'control_set': ['cells'],
+    'input_set': ['env','inputs'],
+    # 'input_set': ['env','inputs', 'outputs'],
+    'dataset': 'train',
+    'index': 0
+}
+
+gp = ARCDataProcessor(config_dict, arc_dict)
+info = gp.create_info()
+print(info)
+
+ins = gp.get_env_inputs_names()
+print('names', ins)
+inds = gp.get_env_inputs_indexes()
+print('indexes', inds)
+
+state, info = gp.get_state()
+print(info)
+print('fitness', gp.fitness_function(), state)
+print()
+
+
Example using cells only
+{'num_actions': 9, 'env': (3, 3), 'inputs': (3, 3)}
+names ['IE001', 'IE002', 'IE003', 'IE004', 'IE005', 'IE006', 'IE007', 'IE008', 'IE009', 'II001', 'II002', 'II003', 'II004', 'II005', 'II006', 'II007', 'II008', 'II009']
+indexes [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
+{'num_actions': 9, 'env': (3, 3), 'inputs': (3, 3)}
+fitness 2143.0 {'inputs': {'cells': {'env': array([[0., 7., 7.],
+       [7., 7., 7.],
+       [0., 7., 7.]], dtype=float32), 'inputs': array([[0, 7, 7],
+       [7, 7, 7],
+       [0, 7, 7]])}}}
+
+
+
+
+
+
+

ARCEnv

+
+

source

+
+

ARCEnv

+
+
 ARCEnv (namespace='')
+
+

*The main OpenAI Gym class.

+

It encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.

+

The main API methods that users of this class need to know are:

+
    +
  • :meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.
  • +
  • :meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.
  • +
  • :meth:render - Renders the environment observation with modes depending on the output
  • +
  • :meth:close - Closes the environment, important for rendering where pygame is imported
  • +
+

And set the following attributes:

+
    +
  • :attr:action_space - The Space object corresponding to valid actions
  • +
  • :attr:observation_space - The Space object corresponding to valid observations
  • +
  • :attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards
  • +
  • :attr:spec - An environment spec that contains the information used to initialise the environment from gym.make
  • +
  • :attr:metadata - The metadata of the environment, i.e. render modes
  • +
  • :attr:np_random - The random number generator for the environment
  • +
+

Note: a default reward range set to :math:(-\infty,+\infty) already exists. Set it if you want a narrower range.*

+
+
# Example usage:
+props = {'dir': 'C:\\packages\\arc-prize-2024', 'file_prefix':'arc-agi_training_', 'code':'007bbfb7', 'control_set': ['dims'], 'input_set': ['env'],'dataset': 'train'}
+file_name = os.path.join(props['dir'], props['file_prefix']) + 'challenges.json' 
+challenges_manager = ChallengesDataManager(file_name)
+data = challenges_manager.get_data_for_key(props['code'])
+print(data)
+# arc_dict={}
+# arc_dict['data'] = data
+arc_env = ARCEnv()
+arc_env.initialise(props, data)
+arc_env.render()
+#    print(state, fitness, done)
+# print(arc_env.dimensions)
+for i in range(6):
+    state, fitness, done, info = arc_env.step([1])
+    # print(state, fitness, done)
+    print(state, fitness, done, info)
+    arc_env.render()
+    sleep(1)
+
+
{'test': [{'input': [[7, 0, 7], [7, 0, 7], [7, 7, 0]]}], 'train': [{'input': [[0, 7, 7], [7, 7, 7], [0, 7, 7]], 'output': [[0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [7, 7, 7, 7, 7, 7, 7, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7]]}, {'input': [[4, 0, 4], [0, 0, 0], [0, 4, 0]], 'output': [[4, 0, 4, 0, 0, 0, 4, 0, 4], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 0, 0, 0, 0, 0, 4, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 0, 4, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 4, 0, 0, 0, 0]]}, {'input': [[0, 0, 0], [0, 0, 2], [2, 0, 2]], 'output': [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 2], [0, 0, 0, 0, 0, 0, 2, 0, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0, 0, 2], [2, 0, 2, 0, 0, 0, 2, 0, 2]]}, {'input': [[6, 6, 0], [6, 0, 0], [0, 6, 6]], 'output': [[6, 6, 0, 6, 6, 0, 0, 0, 0], [6, 0, 0, 6, 0, 0, 0, 0, 0], [0, 6, 6, 0, 6, 6, 0, 0, 0], [6, 6, 0, 0, 0, 0, 0, 0, 0], [6, 0, 0, 0, 0, 0, 0, 0, 0], [0, 6, 6, 0, 0, 0, 0, 0, 0], [0, 0, 0, 6, 6, 0, 6, 6, 0], [0, 0, 0, 6, 0, 0, 6, 0, 0], [0, 0, 0, 0, 6, 6, 0, 6, 6]]}, {'input': [[2, 2, 2], [0, 0, 0], [0, 2, 2]], 'output': [[2, 2, 2, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 2, 0, 2, 2, 0, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 2, 0, 2, 2]]}]}
+step 2 0
+{'inputs': {'dims': {'env': (4,)}}} 50 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+step 3 0
+{'inputs': {'dims': {'env': (5,)}}} 32 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+step 4 0
+{'inputs': {'dims': {'env': (6,)}}} 18 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+step 5 0
+{'inputs': {'dims': {'env': (7,)}}} 8 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+step 6 0
+{'inputs': {'dims': {'env': (8,)}}} 2 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+step 7 0
+{'inputs': {'dims': {'env': (9,)}}} 0 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+
+
+
+
sleep(2)
+arc_env.close()
+
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/architectures.html b/architectures.html new file mode 100644 index 00000000..85ba10fb --- /dev/null +++ b/architectures.html @@ -0,0 +1,898 @@ + + + + + + + + + + +Architectures – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Architectures

+
+ +
+
+ Classes to create hierachy architectures from array configurations. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+
#sys.path.append("..")
+
+
+

source

+
+

BaseArchitecture

+
+
 BaseArchitecture (name=None, config=None, env=None, inputs=None,
+                   history=None, error_collector=None, namespace=None)
+
+

Base class of an array architecture. This class is not used direclty by developers, but defines the functionality common to all.

+
+

source

+
+
+

ProportionalArchitecture

+
+
 ProportionalArchitecture (name='proportional', config=None, env=None,
+                           input_indexes=None, history=False,
+                           error_collector=None, namespace=None, **cargs)
+
+

Proportional Architecture

+
+

source

+
+
+

DynamicArchitecture

+
+
 DynamicArchitecture (*args, **kwargs)
+
+

Dynamic Architecture

+
+

source

+
+
+

run_from_properties_file

+
+
 run_from_properties_file (root_dir='.', path='.', file=None, nevals=None,
+                           runs=500, history=True, verbose=False,
+                           test=False, move=None, draw=False,
+                           plots_figsize=(15, 4), render=True,
+                           layout=None, early_termination=False,
+                           plots=None, seed=None, print_properties=False,
+                           figsize=(12, 12), summary=False,
+                           hpct_verbose=False, error_collector_type=None,
+                           error_response_type=None, draw_file=None,
+                           funcdata=False, interactive_mode=False)
+
+
+

source

+
+
+

load_properties

+
+
 load_properties (root_dir=None, file_path=None, file_name=None,
+                  nevals=None, seed=None, print_properties=False,
+                  gens=None, pop_size=None, evolve=False)
+
+
+

source

+
+
+

setup_environment

+
+
 setup_environment (properties, render=False, seed=None,
+                    early_termination=None, error_collector_type=None,
+                    error_response_type=None)
+
+
+

source

+
+
+

create_hierarchy

+
+
 create_hierarchy (env, error_collector, properties, history=False,
+                   suffixes=False)
+
+
+
from pct.environments import VelocityModel
+from pct.structure import ArchitectureStructure
+from pct.functions import IndexedParameter
+from pct.hierarchy import PCTHierarchy
+from pct.structure import LevelKey
+from pct.nodes import PCTNode
+
+
+
env = VelocityModel(name='VModel')
+namespace=env.namespace
+inputs=[2]
+structure = ArchitectureStructure()
+config = {'parameters': {}, 'level0': [[[1.0864011617580416, -1.0342161642584196], [-8.899524671308557, -8.976856229389936]], [-0.7295091920311653, -4.460573287694404], [0, 0], [[-4.146713118740296, 1.2794655139677662]]]}
+with warnings.catch_warnings():
+    warnings.simplefilter("ignore")
+    pa = DynamicArchitecture(structure=structure, config=config, env=env, input_indexes=inputs, namespace=namespace) #, error_collector=te)
+    pa()
+#hpct = pa.get_hierarchy()
+#hpct.summary()
+#move={'VModel': [-0.2, -0.3],'Input0': [-0.3, 0],'OL0C0ws': [-0.4, 0],'OL0C1ws': [0.6, 0]}
+#hpct.draw(move=move, with_edge_labels=True, figsize=(14,14))
+
+
+
from pct.environments import Pendulum
+from pct.functions import Constant
+
+
+
pen = Pendulum(name='Pendulum',render=True, seed=1)
+namespace = pen.namespace
+#print(namespace)
+inputs=[2, 3]
+config = {'level0': [[[0, 0, 1], [0, 0, 1]], [74.7727669099358, 37.42447782017047, 70.45900090605967], [[1, 0, 1]]], 'level1': [[[1, 0, 1], [1, 1, 1]], [0.028281504070566288, 0.29618653732851286], [[-49.05302284318027, 46.949638698585005], [-96.63198831250754, -29.78373183094591], [-3.8249493797145107, -60.95121501461629]]], 'level2': [[[1, 0], [0, 1]], [0.633350421196448, 0.5607290603484817], [[41.217164164869104, -76.70635343790484], [83.21744682425535, -96.9311066757899]], [1, 2]], 'parameters': {}}
+for key in config.keys():
+    print(key, config[key])
+pa = ProportionalArchitecture(config=config, env=pen, input_indexes=inputs, namespace=namespace)
+pa()
+hpct = pa.get_hierarchy()
+hpct.draw(move={'Pendulum': [-0.2, -0.3],'Input0': [-0.3, 0], 'Input1': [0.3, 0]})
+
+
level0 [[[0, 0, 1], [0, 0, 1]], [74.7727669099358, 37.42447782017047, 70.45900090605967], [[1, 0, 1]]]
+level1 [[[1, 0, 1], [1, 1, 1]], [0.028281504070566288, 0.29618653732851286], [[-49.05302284318027, 46.949638698585005], [-96.63198831250754, -29.78373183094591], [-3.8249493797145107, -60.95121501461629]]]
+level2 [[[1, 0], [0, 1]], [0.633350421196448, 0.5607290603484817], [[41.217164164869104, -76.70635343790484], [83.21744682425535, -96.9311066757899]], [1, 2]]
+parameters {}
+
+
+
+
pen = Pendulum(name='Pendulum',render=True, seed=1)
+namespace = pen.namespace
+inputs=[2, 3]
+config = {'level0': [[[0], [0]], [60.92750637861888], [[1]]], 'level1': [[[1], [1]], [0.8221926728404025, 0.5936199577845901], [[2.941087338758976, -68.59700733589955]], [1, 2]], 'parameters': {}}
+for key in config.keys():
+    print(key, config[key])
+pa = ProportionalArchitecture(config=config, env=pen, input_indexes=inputs, namespace = namespace)
+pa()
+hpct = pa.get_hierarchy()
+hpct.draw(move={'Pendulum': [-0.2, -0.3],'Input0': [-0.3, 0], 'Input1': [0.3, 0]})
+
+
level0 [[[0], [0]], [60.92750637861888], [[1]]]
+level1 [[[1], [1]], [0.8221926728404025, 0.5936199577845901], [[2.941087338758976, -68.59700733589955]], [1, 2]]
+parameters {}
+
+
+
+
pen = Pendulum(name='Pendulum',render=True, seed=1)
+namespace = pen.namespace
+inputs=[2]
+config = {'level0': [[[1]], [62.82423385532463], [[0]], [1]], 'parameters': {}}
+for key in config.keys():
+    print(key, config[key])
+    
+pa = ProportionalArchitecture(config=config, env=pen, input_indexes=inputs, namespace = namespace)
+pa()
+hpct = pa.get_hierarchy()
+hpct.draw(move={'Pendulum': [-0.2, -0.3],'Input0': [-0.3, 0]})
+
+
level0 [[[1]], [62.82423385532463], [[0]], [1]]
+parameters {}
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/environment_processing.html b/environment_processing.html new file mode 100644 index 00000000..3331f560 --- /dev/null +++ b/environment_processing.html @@ -0,0 +1,846 @@ + + + + + + + + + + +Environment processing – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Environment processing

+
+ +
+
+ Bespoke processing for each environment. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

Wind Turbine results

+
+

source

+
+

wind_turbine_results

+
+
 wind_turbine_results (environment_properties=None, experiment=None,
+                       root=None, wt='WindTurbine', verbose=None,
+                       early=None, min=None, comparisons=False,
+                       comparisons_print_plots=False, property_dir=None,
+                       property_file=None, plots=None,
+                       log_testing_to_experiment=False)
+
+
+
+
+

EnvironmentProcessingFactory

+
+

source

+
+

EnvironmentProcessingFactory

+
+
 EnvironmentProcessingFactory ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
+
+

BaseEnvironmentProcessing

+
+

source

+
+

BaseEnvironmentProcessing

+
+
 BaseEnvironmentProcessing ()
+
+

Base class of environment processing.

+
+
+
+

WindTurbineEnvironmentProcessing

+
+

source

+
+

WindTurbineEnvironmentProcessing

+
+
 WindTurbineEnvironmentProcessing ()
+
+

WindTurbine environment processing.

+
+

source

+
+
+

DummyEnvironmentProcessing

+
+
 DummyEnvironmentProcessing ()
+
+

Dummy environment processing.

+
+
+
+

ARCEnvironmentProcessing

+
+

source

+
+

ARCEnvironmentProcessing

+
+
 ARCEnvironmentProcessing ()
+
+

ARC environment processing.

+
+
+
+

ARC Test

+
+
env_name = 'ARC'
+args={'file': 'ARC0701-FitnessError-CurrentError-Mode00', 'seed':1, 'drive':'G:\\My Drive\\', 'max': False, 'verbosed': {'display_env': True, 'hpct_verbose': False}}
+env_proc = EnvironmentProcessingFactory.createEnvironmentProcessing(f'{env_name}EnvironmentProcessing')
+env_proc.set_properties(args=args)
+ws=env_proc.get_workspace()
+name = env_proc.get_experiment_name()
+print(ws, name)
+
+
arc-challenge 0701-01
+
+
+
+
#env_proc.results(filepath='G:\\My Drive\\data\\ga\\ARC\\FitnessError-MovingSumError-Mode07\\ga-000.000-s001-1x1-m007-ARC0009-1e1867dd3cfb6967b085ac003458aa46.properties')
+# env_proc.results(filepath='testfiles\\data\\ga\\ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties')
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/environments.html b/environments.html new file mode 100644 index 00000000..c49297e6 --- /dev/null +++ b/environments.html @@ -0,0 +1,1104 @@ + + + + + + + + + + +Environments – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Environments

+
+ +
+
+ Classes to create simulated environment functions. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

source

+
+

EnvironmentFactory

+
+
 EnvironmentFactory ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

ControlEnvironment

+
+
 ControlEnvironment (name=None, value=None, links=None, new_name=True,
+                     namespace=None)
+
+

Abstract ControlEnvironment

+
+

source

+
+
+

OpenAIGym

+
+
 OpenAIGym (env_name=None, render=False, render_mode='rgb_array',
+            video_wrap=False, value=0, name='gym', seed=None, links=None,
+            new_name=True, early_termination=False, namespace=None,
+            **cargs)
+
+

A function that creates and runs an environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.

+
+

source

+
+
+

CartPoleV1

+
+
 CartPoleV1 (render=False, render_mode='rgb_array', video_wrap=False,
+             value=0, name='CartPoleV1', seed=None, links=None,
+             new_name=True, namespace=None, **cargs)
+
+

A function that creates an runs the CartPole-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.

+
+

source

+
+
+

CartPoleDV1

+
+
 CartPoleDV1 (render=False, render_mode='rgb_array', video_wrap=False,
+              value=0, name='CartPoleD-v1', seed=None, links=None,
+              new_name=True, namespace=None, **cargs)
+
+

A function that creates an runs the CartPole-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.

+
+

source

+
+
+

Pendulum

+
+
 Pendulum (render=False, render_mode='rgb_array', video_wrap=False,
+           value=0, name='Pendulum', seed=None, links=None, new_name=True,
+           namespace=None, **cargs)
+
+

A function that creates an runs the Pendulum-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.

+
+
class Pendulum_1(OpenAIGym):
+    "A function that creates an runs the Pendulum-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function."
+    # from obs[0], indices
+    # 0 cos(theta) - +1 is up, -1 is down, 0 is left and right
+    # 1 sin(theta) - +1 is left, -1 is right, 0 is up and down
+    # 2 theta dot - +dot is anti-clockwise, -dot is clockwise
+    # 3 theta dot - normalised to +/- 1    
+    # 4 theta +1/-1 (added here) 1 is pointing upwards, + is anti-clockwise, - is clockwise
+    # reward - -(theta^2 + 0.1*theta_dt^2 + 0.001*action^2)
+
+    def __init__(self, render=False, render_mode="rgb_array", video_wrap=False, value=0, name="Pendulum_1", 
+                 seed=None, links=None, new_name=True, namespace=None,**cargs):        
+        super().__init__('Pendulum-v1', render=render, render_mode=render_mode, video_wrap=video_wrap, value=value, name=name, seed=seed, 
+                         links=links, new_name=new_name, namespace=namespace, **cargs)
+        
+    def process_hierarchy_values(self):
+        self.hierarchy_values = self.links[0].get_value()
+   
+    def process_actions(self):
+        pass
+    
+    def apply_actions_get_obs(self):
+        return self.env.step([self.hierarchy_values])
+        
+    def parse_obs(self):    
+        self.value = self.obs[0]
+        self.reward = -self.obs[1]
+        self.done = self.obs[2]
+        self.info = self.obs[3]
+
+    def process_values(self):
+        vel = self.obs[0][2]/8.0
+        self.value = np.append(self.value, vel)
+        x = math.copysign(math.acos(self.obs[0][0]), self.obs[0][1])/math.pi
+        #theta = 100 - (10 * math.copysign(1-abs(x), x))
+        theta = 100 - (10 * x)
+        self.value = np.append(self.value, theta)
+        
+    class Factory:
+        def create(self, seed=None): return Pendulum_1(seed=seed)
+    class FactoryWithNamespace:
+        def create(self, namespace=None, seed=None): return Pendulum_1(namespace=namespace, seed=seed)
+
+
+

source

+
+
+

MountainCarV0

+
+
 MountainCarV0 (render=False, render_mode='rgb_array', video_wrap=False,
+                value=0, name='MountainCarV0', seed=None, links=None,
+                new_name=True, namespace=None, **cargs)
+
+

A function that creates and runs the MountainCar-v0 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.

+
+

source

+
+
+

MountainCarContinuousV0

+
+
 MountainCarContinuousV0 (render=False, render_mode='rgb_array',
+                          video_wrap=False, value=0,
+                          name='MountainCarContinuousV0', seed=None,
+                          links=None, new_name=True,
+                          early_termination=True, namespace=None, **cargs)
+
+

A function that creates and runs the MountainCarContinuous-v0 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.

+
+

source

+
+
+

WindTurbine

+
+
 WindTurbine (value=0, name='WindTurbine', links=None, new_name=True,
+              namespace=None, seed=None, **cargs)
+
+

A function that creates and runs the YawEnv environment for a wind turbine. Indexes 0 - action, 1 - yaw error, 2 - wind direction, 3 - wind speed (ignore 0).

+
+

source

+
+
+

VelocityModel

+
+
 VelocityModel (mass=50, value=0, name='VelocityModel', links=None,
+                num_links=1, new_name=True, indexes=0, namespace=None,
+                **cargs)
+
+

A simple model of a moving object of a particular mass. Parameters: The environment name, mass. Links: Link to the action function.

+
+

source

+
+
+

DummyModel

+
+
 DummyModel (name='World', value=0, links=None, new_name=True,
+             namespace=None, seed=None, **cargs)
+
+

Base class of a PCT function. This class is not used directly by developers, but defines the functionality common to all.

+
+

source

+
+
+

WebotsWrestler

+
+
 WebotsWrestler (render=False, value=0, name='WebotsWrestler', seed=None,
+                 links=None, new_name=True, early_termination=True,
+                 namespace=None)
+
+

A function that creates and runs a Webots Wrestler robot.

+
+

source

+
+
+

WebotsWrestlerSupervisor

+
+
 WebotsWrestlerSupervisor (render=False, value=0,
+                           name='WebotsWrestlerSupervisor', seed=None,
+                           links=None, new_name=True,
+                           early_termination=True, namespace=None)
+
+

A function that creates and runs a Webots Wrestler robot.

+
+

source

+
+
+

Bridge

+
+
 Bridge (render=False, value=0, name='Bridge', seed=None, links=None,
+         new_name=True, early_termination=True, namespace=None)
+
+

An environment function with sensors set by external system.

+
+

source

+
+
+

MicroGrid

+
+
 MicroGrid (value=0, name='MicroGrid', links=None, new_name=True,
+            namespace=None, seed=None, **cargs)
+
+

A function that creates and runs the microgrid environment for an energy management system.
‘Deep reinforcement learning for energy management in a microgrid with flexible demand.’
Taha Abdelhalim Nakabi, Pekka Toivanen.
https://doi.org/10.1016/j.segan.2020.100413

Inputs - st = [SoCt, BSCt, Cbt, Tt, Gt, Put, Lb,t, t].
0 - ISC - the average SoC (state-of-charge) of the TCLs,
1 - IL - the current load value of the daily consumption pattern.
2 - IPC - the pricing counter,
3 - IBS - the battery SoC,
4 - IEG - the energy generation,
5 - IT - the temparature,
6 - IEP - the electricty prices,
7 - ITS - the time step,
Actions:
0 - TCL action, Atcl,
1 - price action, Ap,
2 - energy deficiency action, Ad,
3 - energy excess action, Ae

+
+
env = MicroGrid(seed=1)
+env.summary()
+
+
MicroGrid MicroGrid | 0 
+
+
+
+
+

ARC

+
+

source

+
+
+

ARC

+
+
 ARC (value:float=0, name:str='ARC', links:Optional[List]=None,
+      new_name:bool=True, render:bool=False, seed:int=None,
+      namespace:Optional[str]=None, **cargs:dict)
+
+

A function that creates and runs an ARC environment from a file given the rask code.

+
+
env = ARC()
+env.add_link(Constant(1))
+# env.add_link(Constant(0))
+properties = { 'dir': 'C:\\packages\\arc-prize-2024', 'file_prefix':'arc-agi_training_', 'code':'007bbfb7', 'dataset': 'train', 'control_set': ['dims'], 'input_set': ['env']}
+file_name = os.path.join(properties['dir'], properties['file_prefix']) + 'challenges.json' 
+challenges_manager = ChallengesDataManager(file_name)
+data = challenges_manager.get_data_for_key(properties['code'])
+properties['data']=data
+
+env.set_properties(properties)
+env.set_render(True)
+env.reset()
+print(env.env.info)
+for i in range(6):
+    state = env()
+    env.summary()    
+    # print()
+print(env.get_config())
+print()
+print(env.output_string())    
+print()
+print(state)
+
+# env.close()
+
+
{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+ARC ARC | [4] | links  constant 
+ARC ARC | [5] | links  constant 
+ARC ARC | [6] | links  constant 
+ARC ARC | [7] | links  constant 
+ARC ARC | [8] | links  constant 
+ARC ARC | [9] | links  constant 
+{'type': 'ARC', 'name': 'ARC', 'value': [9], 'links': {0: 'constant'}, 'env_name': 'ARC'}
+
+1.000 
+9.000 0 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}
+
+[9]
+
+
+
+
env.close()
+
+
+
+

OpenAI Gym

+

An example showing how to use an OpenAI Gym function. And how to have another function which accesses one of the values of the gym environment.

+
+
from pct.functions import Constant
+from pct.functions import IndexedParameter
+from pct.putils import FunctionsList
+from pct.functions import Proportional
+
+
+
render=False 
+print(render)
+acrobot = OpenAIGym("Acrobot-v1", render=render, seed=1)
+namespace=acrobot.namespace
+acrobot.add_link(Constant(1, namespace=namespace))
+#acrobot.get_config()
+
+
False
+
+
+
+
#acrobot()
+#print(acrobot.reward)
+#print(getattr(acrobot, "reward"))
+
+
+
acrobot.output_string()
+
+
'0.000'
+
+
+
+
#acrobot.value[0]
+
+

The IndexedParameter type retrieves a value from a linked function based upon an index.

+
+
cos_angle1 = IndexedParameter(0, name="cos_angle1", namespace=namespace)
+cos_angle1.add_link(acrobot)
+print(cos_angle1.get_config())
+#cos_angle1()
+
+
{'type': 'IndexedParameter', 'name': 'cos_angle1', 'value': 0, 'links': {0: 'gym'}, 'index': 0}
+
+
+
+
acrobot.close()
+
+
+
pen = Pendulum(render=True, namespace=namespace, seed=1)
+pen.add_link(Constant([1], namespace=namespace))
+print(pen.get_config())
+#pen.run(steps=10, verbose=True)
+# why TypeError: size must be two numbers?
+
+
{'type': 'Pendulum', 'name': 'Pendulum', 'value': 0, 'links': {0: 'constant1'}, 'env_name': 'Pendulum-v1', 'reward': 0, 'done': False, 'info': {}}
+
+
+
+
pen.close()
+
+
+
+

Velocity Model

+
+
vm = VelocityModel(name='VelocityModel', namespace=namespace)
+vm.add_link(Constant(1, name='mycon'))
+print(vm.summary())
+config = vm.get_config()
+print(config)
+assert config == {'type': 'VelocityModel', 'name': 'VelocityModel', 'value': 0, 'links': {0: 'mycon'}, 'mass': 50}
+vm.run(steps=10, verbose=True)
+
+
VelocityModel VelocityModel | 0 | links  mycon 
+None
+{'type': 'VelocityModel', 'name': 'VelocityModel', 'value': 0, 'links': {0: 'mycon'}, 'mass': 50}
+0.020 0.040 0.060 0.080 0.100 0.120 0.140 0.160 0.180 0.200 
+
+
+
0.19999999999999998
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/errors.html b/errors.html new file mode 100644 index 00000000..304c725c --- /dev/null +++ b/errors.html @@ -0,0 +1,1071 @@ + + + + + + + + + + +Errors – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Errors

+
+ +
+
+ Types of error response of a percectual control hierarchy. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

BaseErrorType

+
+

source

+
+

BaseErrorType

+
+
 BaseErrorType (flip_error_response=False)
+
+

Base class of a type error response. This class is not used direclty by developers, but defines the interface common to all.

+
+
+
+

RootSumSquaredError

+
+

source

+
+

RootSumSquaredError

+
+
 RootSumSquaredError (flip_error_response=False)
+
+

The square root of the sum of the square of the errors.

+
+
+
+

RootMeanSquareError

+
+

source

+
+

RootMeanSquareError

+
+
 RootMeanSquareError (flip_error_response=False)
+
+

The square root of the mean of the sum of the square of the errors.

+
+
+
+

SummedError

+
+

source

+
+

SummedError

+
+
 SummedError (flip_error_response=False)
+
+

Sum of all errors.

+
+
+
+

SummedError

+
+

source

+
+

CurrentError

+
+
 CurrentError (flip_error_response=False)
+
+

The current error, rather than a function of the historical values.

+
+
+
+

CurrentError

+
+

source

+
+

SmoothError

+
+
 SmoothError (flip_error_response=False)
+
+

The exponential smoothed value of the error.

+
+
+
+

MovingSumError

+
+

source

+
+

MovingSumError

+
+
 MovingSumError (flip_error_response=False)
+
+

The moving sum of the error.

+
+
+
+

MovingAverageError

+
+

source

+
+

MovingAverageError

+
+
 MovingAverageError (flip_error_response=False)
+
+

The moving average of the error.

+
+
+
+

BaseErrorCollector

+
+

source

+
+

BaseErrorCollector

+
+
 BaseErrorCollector (limit, error_response, min=True)
+
+

Base class of an error collector. This class is not used direclty by developers, but defines the interface common to all.

+
+
+
+

TotalError

+
+

source

+
+

TotalError

+
+
 TotalError (limit=None, error_response=None, min=None, **cargs)
+
+

A class to collect all the errors of the control system run.

+
+
+
+

TopError

+
+

source

+
+

TopError

+
+
 TopError (limit=None, error_response=None, min=None, **cargs)
+
+

A class to collect all the errors of the top-level nodes.

+
+
+
+

InputsError

+
+

source

+
+

InputsError

+
+
 InputsError (limit=None, error_response=None, min=None, **cargs)
+
+

A class to collect the values of the input values.

+
+
+
+

ReferencedInputsError

+
+

source

+
+

ReferencedInputsError

+
+
 ReferencedInputsError (limit=None, error_response=None, min=None,
+                        **cargs)
+
+

A class to collect the values of the input values subtracted from reference values.

+
+
+
+

RewardError

+
+

source

+
+

RewardError

+
+
 RewardError (limit=None, error_response=None, min=None, **cargs)
+
+

A class that collects the reward value of the control system run.

+
+
+
+

FitnessError

+
+

source

+
+

FitnessError

+
+
 FitnessError (limit=None, error_response=None, min=None, **cargs)
+
+

A class that collects the fitness value of the control system run.

+
+
+
+

ErrorResponseFactory

+
+

source

+
+

ErrorResponseFactory

+
+
 ErrorResponseFactory ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
+
+

ErrorCollectorFactory

+
+

source

+
+

ErrorCollectorFactory

+
+
 ErrorCollectorFactory ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
rms = RootMeanSquareError()
+for i in range(10):
+    rms(i)
+er = rms.get_error_response()
+print(er)
+assert er == 5.338539126015656
+
+
5.338539126015656
+
+
+
+
er = RootSumSquaredError()
+te = TotalError(error_response=er, limit=250,min=True)   
+te.add_error_data([1, 2])
+print(te)
+
+
TotalError limit:250, limit_exceeded:False, : RootSumSquaredError error_response:2.23606797749979
+
+
+
+
# hpct = PCTHierarchy(1,1,error_collector=te)
+# hpct.run(steps=5, verbose=True)
+
+
+
err=te.error()
+print(err)
+
+
2.23606797749979
+
+
+
+
et = ErrorResponseFactory.createErrorResponse('RootSumSquaredError')   
+et(102)
+print(et.get_error_response())
+
+ec = ErrorCollectorFactory.createErrorCollector('TotalError')   
+ec.set_limit(100)
+ec.set_error_response(et)
+print(ec.error())
+
+
102.0
+102.0
+
+
+
+
ec = BaseErrorCollector.collector( 'RootMeanSquareError','InputsError', 10, flip_error_response=True, min=False)
+
+
+
ec.add_error_data([1])
+print(ec.error())
+print(ec)
+
+
-1.0
+InputsError limit:10, limit_exceeded:False, : RootMeanSquareError error_response:-1.0
+
+
+
+
ec.reset()
+
+
+
print(ec)
+
+
InputsError limit:10, limit_exceeded:False, : RootMeanSquareError error_response:None
+
+
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/examples.html b/examples.html new file mode 100644 index 00000000..fb7ffb36 --- /dev/null +++ b/examples.html @@ -0,0 +1,959 @@ + + + + + + + + + + +Examples – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Examples

+
+ +
+
+ Examples of the PCT library in use. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+
+
+
The autoreload extension is already loaded. To reload it, use:
+  %reload_ext autoreload
+
+
+
+
import gym, warnings
+render=False
+runs=1
+
+
+
render=True
+runs=2000
+
+
+

Cartpole

+

Cartpole is an Open AI gym environment for the inverted pendulum problem. The goal is to keep the pole balanced, by moving the cart left or right.

+

The environment provides observations (perceptions) for the state of the cart and pole.

+

0 - Cart Position
+1 - Cart Velocity
+2 - Pole Angle
+3 - Pole Angular Velocity

+

It takes one value, of 0 or 1, for applying a force to the left or right, respectively.

+

The PCT solution is a four-level hierarchy for controlling the perceptions at goal values. Only one goal reference is manually set, the highest level which is the pole angle of 0.

+

This example shows how a perceptual control hierarchy can be implemented with this library.

+
+
import matplotlib.pyplot as plt
+import numpy as np
+from pct.hierarchy import PCTHierarchy
+from pct.putils import FunctionsList
+from pct.environments import CartPoleV1
+from pct.functions import IndexedParameter
+from pct.functions import Integration
+from pct.functions import GreaterThan
+from pct.functions import PassOn
+
+

Create a hierarchy of 4 levels each with one node.

+
+
cartpole_hierarchy = PCTHierarchy(levels=4, cols=1, name="cartpoleh", build=False)
+namespace=cartpole_hierarchy.namespace
+cartpole_hierarchy.get_node(0, 0).name = 'cart_velocity_node'
+cartpole_hierarchy.get_node(1, 0).name = 'cart_position_node'
+cartpole_hierarchy.get_node(2, 0).name = 'pole_velocity_node'
+cartpole_hierarchy.get_node(3, 0).name = 'pole_angle_node'
+#FunctionsList.getInstance().report()
+#cartpole_hierarchy.summary(build=True)
+
+

Create the Cartpole gym environment function. This will apply the “action” output from the hierarchy and provide the new observations.

+
+
cartpole = CartPoleV1(name="CartPole-v1", render=render, namespace=namespace, seed=1)
+
+

Create functions for each of the observation parameters of the Cartpole environment. Insert them into the hierarchy at the desired places.

+
+
cartpole_hierarchy.insert_function(level=0, col=0, collection="perception", function=IndexedParameter(index=1, name="cart_velocity", links=[cartpole], namespace=namespace))
+cartpole_hierarchy.insert_function(level=1, col=0, collection="perception", function=IndexedParameter(index=0, name="cart_position", links=[cartpole], namespace=namespace))
+cartpole_hierarchy.insert_function(level=2, col=0, collection="perception", function=IndexedParameter(index=3, name="pole_velocity", links=[cartpole], namespace=namespace))
+cartpole_hierarchy.insert_function(level=3, col=0, collection="perception", function=IndexedParameter(index=2, name="pole_angle", links=[cartpole], namespace=namespace))
+
+

Link the references to the outputs of the level up.

+
+
cartpole_hierarchy.insert_function(level=0, col=0, collection="reference", function=PassOn(name="cart_velocity_reference", links=['proportional1'], namespace=namespace))
+cartpole_hierarchy.insert_function(level=1, col=0, collection="reference", function=PassOn(name="cart_position_reference", links=['proportional2'], namespace=namespace))
+cartpole_hierarchy.insert_function(level=2, col=0, collection="reference", function=PassOn(name="pole_velocity_reference", links=['proportional3'], namespace=namespace))
+
+

Set the highest level reference.

+
+
top = cartpole_hierarchy.get_function(level=3, col=0, collection="reference")
+top.set_name("pole_angle_reference")
+top.set_value(0)
+
+

Link the output of the hierarchy back to the Cartpole environment.

+
+
cartpole_hierarchy.summary(build=True)
+
+
**************************
+cartpoleh PCTHierarchy [1, 1, 1, 1] 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+--------------------------
+PRE: None
+Level 0 Cols 1
+cart_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: cart_velocity_reference PassOn | 0 | links  proportional1 
+PER: cart_velocity IndexedParameter | index 1 | 0 | links  CartPole-v1 
+COM: subtract Subtract | 0 | links  cart_velocity_reference cart_velocity 
+OUT: proportional Proportional | gain 1 | 0 | links  subtract 
+----------------------------
+Level 1 Cols 1
+cart_position_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: cart_position_reference PassOn | 0 | links  proportional2 
+PER: cart_position IndexedParameter | index 0 | 0 | links  CartPole-v1 
+COM: subtract1 Subtract | 0 | links  cart_position_reference cart_position 
+OUT: proportional1 Proportional | gain 1 | 0 | links  subtract1 
+----------------------------
+Level 2 Cols 1
+pole_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: pole_velocity_reference PassOn | 0 | links  proportional3 
+PER: pole_velocity IndexedParameter | index 3 | 0 | links  CartPole-v1 
+COM: subtract2 Subtract | 0 | links  pole_velocity_reference pole_velocity 
+OUT: proportional2 Proportional | gain 1 | 0 | links  subtract2 
+----------------------------
+Level 3 Cols 1
+pole_angle_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: pole_angle_reference Constant | 0 
+PER: pole_angle IndexedParameter | index 2 | 0 | links  CartPole-v1 
+COM: subtract3 Subtract | 0 | links  pole_angle_reference pole_angle 
+OUT: proportional3 Proportional | gain 1 | 0 | links  subtract3 
+----------------------------
+POST: None
+**************************
+
+
+
+
cartpole_hierarchy.insert_function(level=0, col=0, collection="output", function=Integration(gain=-0.05, slow=4, name="force", links='subtract', namespace=namespace))
+
+

Set the names and gains of the output functions. This also shows another way of getting a function, by name.

+
+
FunctionsList.getInstance().get_function(namespace=namespace, name="proportional3").set_name("pole_angle_output")
+FunctionsList.getInstance().get_function(namespace=namespace, name="pole_angle_output").set_property('gain', 3.5)
+
+FunctionsList.getInstance().get_function(namespace=namespace, name="proportional2").set_name("pole_velocity_output")
+FunctionsList.getInstance().get_function(namespace=namespace, name="pole_velocity_output").set_property('gain', 0.5)
+
+FunctionsList.getInstance().get_function(namespace=namespace, name="proportional1").set_name("cart_position_output")
+FunctionsList.getInstance().get_function(namespace=namespace, name="cart_position_output").set_property('gain', 2)
+
+

Add a post function to convert the output to 1 or 0 as required by the Cartpole environment.

+
+
greaterthan = GreaterThan(threshold=0, upper=1, lower=0, links='force', namespace=namespace)
+cartpole_hierarchy.add_postprocessor(greaterthan)
+
+

Add the cartpole function as one that is executed before the actual hierarchy.

+
+
cartpole_hierarchy.add_preprocessor(cartpole)
+
+

Set the output of the hierachy as the action input to the Cartpole environment.

+
+
#link = cartpole_hierarchy.get_output_function()
+cartpole.add_link(greaterthan)
+
+

Sit back and observe the brilliance of your efforts.

+
+
cartpole_hierarchy.set_order("Down")
+
+
+
cartpole_hierarchy.summary()
+
+
**************************
+cartpoleh PCTHierarchy [1, 1, 1, 1] 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+--------------------------
+PRE: CartPole-v1 CartPoleV1 | 0 | links  greaterthan 
+Level 3 Cols 1
+pole_angle_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: pole_angle_reference Constant | 0 
+PER: pole_angle IndexedParameter | index 2 | 0 | links  CartPole-v1 
+COM: subtract3 Subtract | 0 | links  pole_angle_reference pole_angle 
+OUT: pole_angle_output Proportional | gain 3.5 | 0 | links  subtract3 
+----------------------------
+Level 2 Cols 1
+pole_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: pole_velocity_reference PassOn | 0 | links  pole_angle_output 
+PER: pole_velocity IndexedParameter | index 3 | 0 | links  CartPole-v1 
+COM: subtract2 Subtract | 0 | links  pole_velocity_reference pole_velocity 
+OUT: pole_velocity_output Proportional | gain 0.5 | 0 | links  subtract2 
+----------------------------
+Level 1 Cols 1
+cart_position_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: cart_position_reference PassOn | 0 | links  pole_velocity_output 
+PER: cart_position IndexedParameter | index 0 | 0 | links  CartPole-v1 
+COM: subtract1 Subtract | 0 | links  cart_position_reference cart_position 
+OUT: cart_position_output Proportional | gain 2 | 0 | links  subtract1 
+----------------------------
+Level 0 Cols 1
+cart_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b
+----------------------------
+REF: cart_velocity_reference PassOn | 0 | links  cart_position_output 
+PER: cart_velocity IndexedParameter | index 1 | 0 | links  CartPole-v1 
+COM: subtract Subtract | 0 | links  cart_velocity_reference cart_velocity 
+OUT: force Integration | gain -0.05 slow 4  | 0 | links  subtract 
+----------------------------
+POST: greaterthan GreaterThan | threshold 0 upper 1 lower 0  | 0 | links  force 
+**************************
+
+
+
+
cartpole_hierarchy.draw(font_size=10, figsize=(8,12), move={'CartPole-v1': [-0.075, 0]}, node_size=1000, node_color='red')
+
+
+
cartpole_hierarchy.save("cartpole.json")
+
+
+
import networkx as nx
+gr = cartpole_hierarchy.graph()
+with warnings.catch_warnings():
+    warnings.simplefilter("ignore")
+    print(nx.info(gr))
+    print(gr.nodes())
+
+
DiGraph with 18 nodes and 21 edges
+['greaterthan', 'force', 'CartPole-v1', 'cart_velocity_reference', 'cart_position_output', 'subtract', 'cart_velocity', 'cart_position_reference', 'pole_velocity_output', 'subtract1', 'cart_position', 'pole_velocity_reference', 'pole_angle_output', 'subtract2', 'pole_velocity', 'pole_angle_reference', 'subtract3', 'pole_angle']
+
+
+

Run the hierarchy for 500 steps.

+
+
cartpole_hierarchy.run(1,verbose=False)
+
+
1
+
+
+
+
cartpole_hierarchy.run(runs,verbose=False)
+
+
1
+
+
+
+
cartpole.close()
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/functions.html b/functions.html new file mode 100644 index 00000000..6b73ce30 --- /dev/null +++ b/functions.html @@ -0,0 +1,1505 @@ + + + + + + + + + + +Functions – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Functions

+
+ +
+
+ Functions that form the elements of a perceptual control node (system). +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

Overview

+

Each function outputs the result of applying the function logic and may be a scalar or array, depending on the input. The inputs are supplied as links to another function, from where the values are read. Unless the function is a simple case, such as a ‘Constant’.

+

Parameters are supplied as arguments to the constructor of the class.

+

All functions include the methods defined by the BaseFunction class.

+
+

source

+
+

HPCTFUNCTION

+
+
 HPCTFUNCTION (value, names=None, module=None, qualname=None, type=None,
+               start=1)
+
+

Types of control functions in a node.

+
+
+
+

Functions

+
+

BaseFunction

+
+

source

+
+

BaseFunction

+
+
 BaseFunction (name=None, value=None, links=None, new_name=True,
+               namespace=None)
+
+

Base class of a PCT function. This class is not used directly by developers, but defines the functionality common to all.

+
+

source

+
+
+

FunctionFactory

+
+
 FunctionFactory ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
#show_doc(BaseFunction.summary)
+
+
+
#show_doc(BaseFunction.get_config)
+
+
+
+
+

Subtract

+
+

source

+
+

Subtract

+
+
 Subtract (value=0, name='subtract', links=None, new_name=True,
+           namespace=None, **cargs)
+
+

A function that subtracts one value from another. Parameter: None. Links: Two links required to each the values to be subtracted.

+
+

source

+
+
+

Proportional

+
+
 Proportional (gain=1, value=0, name='proportional', links=None,
+               new_name=True, namespace=None, **cargs)
+
+

A proportion of the input value as defined by the gain parameter. Parameters: The gain value. Links: One.

+
+

source

+
+
+

Variable

+
+
 Variable (value=0, name='variable', links=None, new_name=True,
+           namespace=None, **cargs)
+
+

A function that returns a variable value. Parameter: The variable value. Links: None

+
+

source

+
+
+

PassOn

+
+
 PassOn (value=0, name='variable', links=None, new_name=True,
+         namespace=None, **cargs)
+
+

A function that passes on a variable value from a linked function. Parameter: None. Links: One

+
+

source

+
+
+

GreaterThan

+
+
 GreaterThan (threshold=0, upper=1, lower=0, value=0, name='greaterthan',
+              links=None, new_name=True, namespace=None, **cargs)
+
+

One of two supplied values is returned if the input is greater than supplied threshold.
Parameters: The threshold and upper and lower value. Links: One

+
+

source

+
+
+

Constant

+
+
 Constant (value=0, name='constant', new_name=True, namespace=None,
+           **cargs)
+
+

A function that returns a constant value. Parameter: The constant value. Links: None

+
+

source

+
+
+

Step

+
+
 Step (upper=None, lower=None, delay=None, period=None, value=0,
+       name='step', new_name=True, namespace=None, **cargs)
+
+

A function that returns an alternating signal. Parameter: The upper and lower values, and a delay value. Links: None

+
+

source

+
+
+

Integration

+
+
 Integration (gain=1, slow=2, value=0, name='integration', links=None,
+              new_name=True, namespace=None, **cargs)
+
+

A leaky integrating function. Equivalent of a exponential smoothing function, of the amplified input. Parameters: The gain and slow values. Links: One.

+
+

source

+
+
+

IntegrationDual

+
+
 IntegrationDual (gain=1, slow=2, value=0, name='integration', links=None,
+                  new_name=True, namespace=None, **cargs)
+
+

A leaky integrating function, applying one signal to another. Equivalent of a exponential smoothing function, of the amplified input. Parameters: The gain and slow values. Links: Two.

+
+

source

+
+
+

Sigmoid

+
+
 Sigmoid (range=2, slope=10, value=0, name='sigmoid', links=None,
+          new_name=True, namespace=None, **cargs)
+
+

A sigmoid function. Similar to a proportional function, but kept within a limit (+/- half the range). Parameters: The range and slope values. Links: One.

+
+

source

+
+
+

WeightedSum

+
+
 WeightedSum (weights=[0], value=0, name='weighted_sum', links=None,
+              new_name=True, usenumpy=False, namespace=None, **cargs)
+
+

A function that combines a set of inputs by multiplying each by a weight and then adding them up. Parameter: The weights array. Links: Links to all the input functions.

+
+

source

+
+
+

SmoothWeightedSum

+
+
 SmoothWeightedSum (weights=[0], smooth_factor=0.0, value=0,
+                    name='smooth_weighted_sum', links=None, new_name=True,
+                    usenumpy=False, namespace=None, **cargs)
+
+

A function that combines a set of inputs by multiplying each by a weight and then adding them up. And then smooths the result. Parameter: The weights array. Links: Links to all the input functions.

+
+

source

+
+
+

IndexedParameter

+
+
 IndexedParameter (index=None, value=0, name='indexed_parameter',
+                   links=None, new_name=True, namespace=None, **cargs)
+
+

A function that returns a parameter from a linked function, indexed by number. Parameter: The index. Links: One.

+
+
+
+

SigmoidWeightedSum

+
+

source

+
+

SigmoidWeightedSum

+
+
 SigmoidWeightedSum (weights=[0], range=2.0, slope=10.0, value=0,
+                     name='sigmoid_weighted_sum', links=None,
+                     new_name=True, usenumpy=False, namespace=None,
+                     **cargs)
+
+

A function that combines a set of inputs by multiplying each by a weight and then adding them up. And then limits the output by squashing with a sigmoid function. Parameter: The weights array. Links: Links to all the input functions.

+
+
+
+

SigmoidSmoothWeightedSum

+
+

source

+
+

SigmoidSmoothWeightedSum

+
+
 SigmoidSmoothWeightedSum (weights=[0], smooth_factor=0.0, range=2.0,
+                           slope=10.0, value=0,
+                           name='sigmoid_smooth_weighted_sum', links=None,
+                           new_name=True, usenumpy=False, namespace=None,
+                           **cargs)
+
+

A function that combines a set of inputs by multiplying each by a weight and then adding them up. It then smooths the result and then limits the output by squashing with a sigmoid function. Parameter: The weights array. Links: Links to all the input functions.

+
+

source

+
+
+

Derivative

+
+
 Derivative (history_length=1, value=0, name='derivative', links=None,
+             new_name=True, usenumpy=False, namespace=None, **cargs)
+
+

A function that provides the difference to previous values of the input signal. Parameter: The weights array. Links: Links to all the input functions.

+
+

source

+
+
+

DerivativeWeightedSum

+
+
 DerivativeWeightedSum (weights=[0], history_length=1, value=0,
+                        name='derivative_weighted_sum', links=None,
+                        new_name=True, usenumpy=False, namespace=None,
+                        **cargs)
+
+

A function that combines a set of inputs by multiplying each by a weight and then adding them up. And then takes the difference of with a past value. Parameter: The weights array. Links: Links to all the input functions.

+
+
+
+
+

Usage

+
+

Creating Functions

+

Standard class constructor. Different ways to create a function with the standard constructor.

+
+
prop = Proportional()
+print(prop.get_config())
+prop = Proportional("myprop", 10)
+print(prop.get_config())
+prop = Proportional(gain=10)
+print(prop.get_config())
+
+
{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}
+{'type': 'Proportional', 'name': 'proportional', 'value': 10, 'links': {}, 'gain': 'myprop'}
+{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 10}
+
+
+

Configuration class constructor. Create the function by passing a configuration structure to the constructor.

+
+
prop = Proportional(**{'name': 'myprop', 'value': 5, 'gain': 20})
+print(prop.get_config())
+
+
{'type': 'Proportional', 'name': 'myprop', 'value': 5, 'links': {}, 'gain': 20}
+
+
+

Configuration class method. Create the function by passing a configuration structure to a class method.

+
+
config = {'name': 'myprop', 'value': -0.5, 'gain': 21}
+prop = Proportional.from_config(config)
+print(prop.get_config())
+
+
{'type': 'Proportional', 'name': 'myprop', 'value': -0.5, 'links': {}, 'gain': 21}
+
+
+
+
prop = Proportional()
+print(prop.get_config())
+prop1 = Proportional.from_config(prop.get_config())
+print(prop1.get_config())
+assert prop.get_config() == prop1.get_config()
+
+
{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}
+{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}
+
+
+

An example showing creating a WeightedSum function.

+
+
wts=[1,1,1]
+ws = WeightedSum(weights=wts)
+ns = ws.namespace
+ws.add_link(Constant(10, namespace=ns))
+ws.add_link(Constant(5, namespace=ns))
+ws.add_link(Constant(20, namespace=ns))
+assert ws() == 35
+config = ws.get_config()
+
+
+
#ws1 = WeightedSum.from_config(config, namespace=ns)
+ws1 = WeightedSum.from_config(config, new_name= 'weighted_sum1', namespace=ns)
+ws1.get_config()
+
+
{'type': 'WeightedSum',
+ 'name': 'weighted_sum1',
+ 'value': 35,
+ 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'},
+ 'weights': [1, 1, 1]}
+
+
+
+
scons = Constant(2, name='scons')
+sig = Sigmoid()
+sig.add_link(scons)
+sig()
+
+
0.9999092042625952
+
+
+
+
cons = Constant([2,2], name='cons')
+print(cons.output_string()+ "")
+
+
[2, 2]
+
+
+
+
+

Viewing Functions

+

View the details of the function with the “summary”, which prints the name, type, parameters, value and links (if any).

+
+
prop.summary()
+
+
proportional Proportional | gain 1 | 0 
+
+
+

As already seen the function details can be seen by retrieving the configuration.

+
+
print(prop.get_config())
+
+
{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}
+
+
+

Or you can print the function.

+
+
print(prop)
+
+
{'namespace': UUID('c2f442d0-fb5c-11ee-ae40-5c879c15de65'), 'value': 0, 'links': [], 'checklinks': True, 'name': 'proportional', 'decimal_places': 3, 'gain': 1}
+
+
+

Set the decimal places for output display.

+
+
print(prop.output_string())
+prop.set_decimal_places(2)
+print(prop.output_string())
+
+
0.000
+0.00
+
+
+

You can also view a function graphically as a network of connected nodes.

+
+
sub = Subtract(links=[Constant(1, name='cons'), Proportional(10, name='prop')], name='sub')
+print(sub.value)
+g = sub.graph()
+print(g)
+sub.draw(node_size=2000)
+
+
0
+DiGraph with 3 nodes and 2 edges
+
+
+
+
+

+
+
+
+
+
+
+

Save and Load

+

Save a function to file.

+
+
import json
+
+
+
print(ws.get_config())
+ws.save("ws.json")
+
+
{'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}
+
+
+

Create a function from file.

+
+
wss = WeightedSum.load("ws.json", new_name='weighted_sum1', namespace=ns)
+print(ws.get_config())
+print(wss.get_config())
+assert wss.get_config() == {'type': 'WeightedSum', 'name': 'weighted_sum2', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}
+
+
{'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}
+{'type': 'WeightedSum', 'name': 'weighted_sum2', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}
+
+
+
+ +
+

Running a Fucntion

+

A function can simply be run by calling it, without any parameters. It will use whatever input was set by the links. It returns the result of the function. In this example it will be 5 * 3 / 10, that is, input * gain / slow.

+
+
out = sub()
+print(out)
+
+
9
+
+
+

A function can be also run in a loop with the run() method and provided the loop count.

+
+
integrator = Integration(gain=3, slow=10)
+integrator.add_link(sub)
+o = integrator.run(steps=10, verbose=True)
+
+
2.700 5.130 7.317 9.285 11.057 12.651 14.086 15.377 16.540 17.586 
+
+
+
+
integrator(verbose=True)
+
+
18.527 
+
+
+
18.527113905569998
+
+
+
+
output = integrator()
+print(output)
+#assert output == 1.5
+npt.assert_almost_equal(output, 19.374402515013)
+
+
19.374402515013
+
+
+
+
print(integrator.get_config())
+
+
{'type': 'Integration', 'name': 'integration', 'value': 19.374402515013, 'links': {0: 'subtract'}, 'gain': 3, 'slow': 10}
+
+
+

An example showing creating and running a sigmoid WeightedSum function.

+
+
wts=[0.01,0.01,0.01]
+sgws = SigmoidWeightedSum(weights=wts, range=1.0, slope=5.0)
+ns = sgws.namespace
+sgws.add_link(Constant(10, namespace=ns))
+sgws.add_link(Constant(5, namespace=ns))
+sgws.add_link(Constant(20, namespace=ns))
+sgws.summary()
+print(sgws.get_parameters_list())
+
+out = sgws()
+print(out)
+assert out == 0.3519528019683106
+
+
sigmoid_weighted_sum SigmoidWeightedSum | weights [0.01, 0.01, 0.01] range 1.00  slope 5.00 | 0 | links  constant constant1 constant2 
+[[0.01, 0.01, 0.01], 1.0, 5.0]
+0.3519528019683106
+
+
+

An example showing creating and running a sigmoid smooth WeightedSum function.

+
+
wts=[0.01,0.01,0.01]
+sgsmws = SigmoidSmoothWeightedSum(weights=wts, smooth_factor=0.9)
+ns = sgsmws.namespace
+sgsmws.add_link(Constant(10, namespace=ns))
+sgsmws.add_link(Constant(5, namespace=ns))
+sgsmws.add_link(Constant(20, namespace=ns))
+sgsmws.summary()
+print(sgsmws.get_parameters_list())
+print(sgsmws.get_graph_name())
+labels = {}
+sgsmws.get_weights_labels_funcdata(labels)
+print('wts labels',labels)
+for _ in range(5):
+    # print(sgsmsm())
+    out = sgsmws()
+    print(out)
+
+npt.assert_almost_equal(out, 0.34373448930708195)
+
+
sigmoid_smooth_weighted_sum SigmoidSmoothWeightedSum | weights [0.01, 0.01, 0.01] smooth 0.90 range 2.00  slope 10.00 | 0 | links  constant constant1 constant2 
+[[0.01, 0.01, 0.01], 0.9, 2.0, 10.0]
+sigmoid_smooth_weighted_sum
+0.90:2.00|10.00
+wts labels {('sigmoid_smooth_weighted_sum\n0.90:2.00|10.00', 'constant\n10.00'): '0.01', ('sigmoid_smooth_weighted_sum\n0.90:2.00|10.00', 'constant1\n5.00'): '0.01', ('sigmoid_smooth_weighted_sum\n0.90:2.00|10.00', 'constant2\n20.00'): '0.01'}
+0.08727737447415773
+0.16473508145615878
+0.23277835967904958
+0.2921474527779875
+0.34373448930708195
+
+
+

An example showing creating and running a smoothed WeightedSum function.

+
+
wts=[1.0,1.0,1.0]
+wts=[0.01,0.01,0.01]
+smws = SmoothWeightedSum(weights=wts, smooth_factor=0.9)
+ns = smws.namespace
+smws.add_link(Constant(10, namespace=ns))
+smws.add_link(Constant(5, namespace=ns))
+smws.add_link(Constant(20, namespace=ns))
+smws.summary()
+print(smws.get_parameters_list())
+print(smws.get_graph_name())
+for _ in range(5):
+    out = smws()
+    print(out)
+
+npt.assert_almost_equal(out, 0.1433285)
+
+
smooth_weighted_sum SmoothWeightedSum | weights [0.01, 0.01, 0.01] smooth 0.90 | 0 | links  constant constant1 constant2 
+[[0.01, 0.01, 0.01], 0.9]
+smooth_weighted_sum
+0.90
+0.034999999999999996
+0.0665
+0.09485
+0.120365
+0.1433285
+
+
+

An example showing creating and running a derivative function.

+
+
dv = Derivative(history_length=5)
+ns = dv.namespace
+cons = Constant(10, namespace=ns)
+dv.add_link(cons)
+dv.summary()
+print(dv.get_config())
+print(dv.get_parameters_list())
+print(dv.get_graph_name())
+labels = {}
+dv.get_weights_labels(labels)
+print(labels)
+for i in range(20):
+    cons.set_value(i*i)
+    out = dv()
+    print(out, end=" ")
+
+print()
+assert out == -136
+print(dv.history)
+assert dv.history == [225, 256, 289, 324, 361]
+
+
derivative Derivative | history_length 5  | 0 | links  constant 
+{'type': 'Derivative', 'name': 'derivative', 'value': 0, 'links': {0: 'constant'}, 'history_length': 5}
+[5]
+derivative
+5.00
+{}
+0 -1 -4 -9 -16 -24 -32 -40 -48 -56 -64 -72 -80 -88 -96 -104 -112 -120 -128 -136 
+[225, 256, 289, 324, 361]
+
+
+

An example showing creating a derivative WeightedSum function.

+
+
wts=[0.01,0.01,0.01]
+dvws = DerivativeWeightedSum(weights=wts, history_length=5)
+ns = dvws.namespace
+cons = Constant(10, namespace=ns)
+dvws.add_link(cons)
+
+#dvws.add_link(Constant(10, namespace=ns))
+dvws.add_link(Constant(5, namespace=ns))
+dvws.add_link(Constant(20, namespace=ns))
+dvws.summary()
+print(dvws.get_config())
+print(dvws.get_parameters_list())
+print(dvws.get_graph_name())
+labels = {}
+dvws.get_weights_labels(labels)
+print(labels)
+for i in range(20):
+    cons.set_value(i*i)
+    out = dvws()
+    print(out, end=" ")
+
+print()
+npt.assert_almost_equal(out, -1.3599999999999999)
+print(dvws.history)
+assert dvws.history == [2.5, 2.81, 3.14, 3.49, 3.86]
+
+
derivative_weighted_sum DerivativeWeightedSum | weights [0.01, 0.01, 0.01] history_length 5 | 0 | links  constant constant1 constant2 
+{'type': 'DerivativeWeightedSum', 'name': 'derivative_weighted_sum', 'value': 0, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [0.01, 0.01, 0.01], 'history_length': 5}
+[[0.01, 0.01, 0.01], 5]
+derivative_weighted_sum
+5
+{('derivative_weighted_sum', 'constant'): '0.01', ('derivative_weighted_sum', 'constant1'): '0.01', ('derivative_weighted_sum', 'constant2'): '0.01'}
+0.0 -0.010000000000000009 -0.040000000000000036 -0.09000000000000002 -0.16000000000000003 -0.24 -0.31999999999999995 -0.39999999999999997 -0.4800000000000001 -0.56 -0.64 -0.72 -0.7999999999999998 -0.8799999999999999 -0.96 -1.04 -1.12 -1.2000000000000002 -1.2800000000000002 -1.3599999999999999 
+[2.5, 2.81, 3.14, 3.49, 3.86]
+
+
+
+
wts=[0.01,0.01,0.01]
+dvws = DerivativeWeightedSum(weights=wts, history_length=0)
+ns = dvws.namespace
+cons = Constant(10, namespace=ns)
+dvws.add_link(cons)
+dvws.add_link(Constant(5, namespace=ns))
+dvws.add_link(Constant(20, namespace=ns))
+dvws.summary()
+print(dvws.get_config())
+print(dvws.get_parameters_list())
+print(dvws.get_graph_name())
+labels = {}
+dvws.get_weights_labels(labels)
+print(labels)
+for i in range(20):
+    cons.set_value(i*i)
+    out = dvws()
+    print(out, end=" ")
+
+print()
+npt.assert_almost_equal(out, 3.86)
+
+
derivative_weighted_sum DerivativeWeightedSum | weights [0.01, 0.01, 0.01] history_length 0 | 0 | links  constant constant1 constant2 
+{'type': 'DerivativeWeightedSum', 'name': 'derivative_weighted_sum', 'value': 0, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [0.01, 0.01, 0.01], 'history_length': 0}
+[[0.01, 0.01, 0.01], 0]
+derivative_weighted_sum
+0
+{('derivative_weighted_sum', 'constant'): '0.01', ('derivative_weighted_sum', 'constant1'): '0.01', ('derivative_weighted_sum', 'constant2'): '0.01'}
+0.25 0.26 0.29000000000000004 0.34 0.41000000000000003 0.5 0.61 0.74 0.8900000000000001 1.06 1.25 1.46 1.69 1.94 2.21 2.5 2.81 3.14 3.49 3.86 
+
+
+
+
+
+

Examples

+
+

Configuration

+

Create a function from the configuration of another.

+
+
integrator = Integration(3, 10)
+ns=integrator.namespace
+cons = Constant(5, namespace=ns)
+integrator.add_link(cons)
+config = integrator.get_config()
+inte = Integration.from_config(config, new_name='integration1', namespace=ns)
+print(inte())
+target = {'type': 'Integration', 'name': 'integration1', 'value': 1.5, 'links': {0: 'constant'}, 'gain': 3, 'slow': 10}
+print(target)
+assert inte.get_config() == target
+
+
1.5
+{'type': 'Integration', 'name': 'integration1', 'value': 1.5, 'links': {0: 'constant'}, 'gain': 3, 'slow': 10}
+
+
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/helpers.html b/helpers.html new file mode 100644 index 00000000..d0ca8c77 --- /dev/null +++ b/helpers.html @@ -0,0 +1,982 @@ + + + + + + + + + +Helper classes – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Helper classes

+
+ + + +
+ + + + +
+ + + +
+ + + +
+

ListChecker

+
+

source

+
+

ListChecker

+
+
 ListChecker ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
@staticmethod
+def check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):
+    """
+    Checks if the values in the float list are close to zero within the specified tolerance
+    and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.
+
+    Returns:
+        bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.
+    """
+    if not float_list:
+        return True
+    
+    values_close_to_zero = all(
+        math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)
+        for value in float_list
+    )
+    
+    if len(float_list) == 1:
+        return values_close_to_zero
+    
+    gradients_close_to_zero = all(
+        math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)
+        for i in range(1, len(float_list))
+    )
+    
+    return values_close_to_zero and gradients_close_to_zero
+
+
+
@staticmethod
+def check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):
+    """
+    Checks if the values in the float list are close to zero within the specified tolerance
+    and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.
+
+    Returns:
+        bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.
+    """
+    if not float_list:
+        return True
+    
+    values_close_to_zero = all(
+        math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)
+        for value in float_list
+    )
+    
+    if len(float_list) == 1:
+        return values_close_to_zero
+    
+    gradients_close_to_zero = all(
+        math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)
+        for i in range(1, len(float_list))
+    )
+    
+    return values_close_to_zero and gradients_close_to_zero
+
+
+
@staticmethod
+def check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):
+    """
+    Checks if the values in the float list are close to zero within the specified tolerance
+    and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.
+
+    Returns:
+        bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.
+    """
+    if not float_list:
+        return True
+    
+    values_close_to_zero = all(
+        math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)
+        for value in float_list
+    )
+    
+    if len(float_list) == 1:
+        return values_close_to_zero
+    
+    gradients_close_to_zero = all(
+        math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)
+        for i in range(1, len(float_list))
+    )
+    
+    return values_close_to_zero and gradients_close_to_zero
+
+
+
@staticmethod
+def check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):
+    """
+    Checks if the values in the float list are close to zero within the specified tolerance
+    and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.
+
+    Returns:
+        bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.
+    """
+    if not float_list:
+        return True
+    
+    values_close_to_zero = all(
+        math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)
+        for value in float_list
+    )
+    
+    if len(float_list) == 1:
+        return values_close_to_zero
+    
+    gradients_close_to_zero = all(
+        math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)
+        for i in range(1, len(float_list))
+    )
+    
+    return values_close_to_zero and gradients_close_to_zero
+
+
+
# Example usage:
+float_list = [1.00000001, 1.00000002, 1.00000003]
+int_list = [1, 1, 1]
+
+print(ListChecker.check_list_unchanged(float_list))  # Should print: True (depending on the tolerance)
+print(ListChecker.check_integer_list_unchanged(int_list))  # Should print: True
+
+
(False, {'gradient': 1.0000000050247593e-08, 'mean': 1.0000000199999999, 'std_dev': 8.164965850304249e-09})
+True
+
+
+
+
+
+

JSONDataManager

+
+

source

+
+

JSONDataManager

+
+
 JSONDataManager (path:str, show_timing:bool=False)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
+
+

ChallengesDataManager

+
+

source

+
+

ChallengesDataManager

+
+
 ChallengesDataManager (path:str, show_timing:bool=False)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
+
+

SolutionsDataManager

+
+

source

+
+

SolutionsDataManager

+
+
 SolutionsDataManager (path:str, show_timing:bool=False)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
# Example usage
+start_time = time.time()
+challenges_manager = ChallengesDataManager("C:\\packages\\arc-prize-2024\\arc-agi_training_challenges.json")
+end_time = time.time()
+print(f"Execution time of challenges load: {end_time - start_time:.4f} seconds")
+
+start_time = time.time()
+solutions_manager = SolutionsDataManager("C:\\packages\\arc-prize-2024\\arc-agi_training_solutions.json")
+end_time = time.time()
+print(f"Execution time of solutions load: {end_time - start_time:.4f} seconds")
+
+print(challenges_manager.get_all_keys())
+print(challenges_manager.count_all_keys())
+print(challenges_manager.get_keys_with_equal_size_input_output())
+gkweqsio = challenges_manager.get_keys_with_equal_size_input_output()
+print(gkweqsio[0])
+print(gkweqsio[1])
+gkwiios = challenges_manager.get_keys_with_inconsistent_input_output_sizes()
+print(gkwiios[0])
+print(gkwiios[1])
+gkwvts = challenges_manager.get_keys_with_variable_input_sizes()
+print(gkwvts[0])
+print(gkwvts[1])
+hist = challenges_manager.get_input_array_histogram()
+print(hist)
+count = 0
+for key, value in hist.items():
+    count += value
+print(count)
+print('get_data_for_key',challenges_manager.get_data_for_key('007bbfb7'))
+print(challenges_manager.get_arrays_for_key('007bbfb7', 'train'))
+print(challenges_manager.get_arrays_for_key('007bbfb7', 'test'))
+
+print('get_largest_array_size', challenges_manager.get_largest_array_size())
+print('analyze_arrays', challenges_manager.analyze_arrays())
+
+
+print('get_all_keys', solutions_manager.get_all_keys())
+print(solutions_manager.count_all_keys())
+get_data_for_key = solutions_manager.get_data_for_key('007bbfb7')
+print('get_data_for_key', get_data_for_key)
+print(solutions_manager.get_arrays_for_key('007bbfb7', 'output'))
+
+
Execution time of challenges load: 0.0301 seconds
+Execution time of solutions load: 0.0053 seconds
+['007bbfb7', '00d62c1b', '017c7c7b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0b148d64', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '10fcaaa3', '11852cab', '1190e5a7', '137eaa0f', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f85a75f', '1f876c06', '1fad071e', '2013d3e2', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '239be575', '23b5c85d', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '27a28665', '28bf18c6', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3428a4f5', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39a8645d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3af2c5a8', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3de23699', '3e980e27', '3eda0437', '3f7978a0', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '4290ef0e', '42a50994', '4347f46a', '444801d8', '445eab21', '447fd412', '44d8ac46', '44f52bb0', '4522001f', '4612dd53', '46442a0e', '469497ad', '46f33fce', '47c1f68c', '484b58aa', '48d8fb45', '4938f0c2', '496994bd', '49d1d64f', '4be741c5', '4c4377d9', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5117e062', '5168d44c', '539a4f51', '53b68214', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '5614dbcf', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5bd6f4ac', '5c0a986e', '5c2c9af4', '5daaa586', '60b61512', '6150a2bd', '623ea044', '62c24649', '63613498', '6430c8c4', '6455b5f5', '662c240a', '67385a82', '673ef223', '6773b310', '67a3c6ac', '67a423a3', '67e8384a', '681b3aeb', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6b9890af', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6ecd11f4', '6f8cd79b', '6fa7a44f', '72322fa7', '72ca375d', '73251a56', '7447852a', '7468f01a', '746b3537', '74dd1130', '75b8110e', '760b3cac', '776ffc46', '77fdfe62', '780d0b14', '7837ac64', '794b24be', '7b6016b9', '7b7f7511', '7c008303', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '7fe24cdd', '80af3007', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '846bdb03', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '88a62173', '890034e9', '8a004b2b', '8be77c9e', '8d5021e8', '8d510a79', '8e1813be', '8e5a5113', '8eb1be9a', '8efcae92', '8f2ea7aa', '90c28cc7', '90f3ed37', '913fb3ed', '91413438', '91714a58', '9172f3a0', '928ad970', '93b581b8', '941d9a10', '94f9d214', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '97a05b5b', '98cf29f8', '995c5fa3', '99b1bc43', '99fa7670', '9aec4887', '9af7a82c', '9d9215db', '9dfd6313', '9ecd008a', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a3325580', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61ba2ce', 'a61f2674', 'a64e4611', 'a65b410d', 'a68b268e', 'a699fb00', 'a740d043', 'a78176bb', 'a79310a0', 'a85d4709', 'a87f7484', 'a8c38be5', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ac0a08a4', 'ae3edfdc', 'ae4f1146', 'aedd82e4', 'af902bf9', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'b91ae062', 'b94a9452', 'b9b7f026', 'ba26e723', 'ba97ae07', 'bb43febb', 'bbc9ae5d', 'bc1d5164', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'be94b721', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3e719e8', 'c3f564a4', 'c444b776', 'c59eb873', 'c8cbb738', 'c8f0f002', 'c909285e', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'cce03e0d', 'cdecee7f', 'ce22a75a', 'ce4f8723', 'ce602527', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd13f3404', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4469b4b', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd631b094', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'd9fac9be', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc0a314f', 'dc1df850', 'dc433765', 'ddf7fa4f', 'de1cd16c', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e50d258f', 'e6721834', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e98196ab', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25fbde4', 'f25ffba3', 'f2829549', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f8a8fe49', 'f8b3ba0a', 'f8c80d96', 'f8ff0b80', 'f9012d9b', 'fafffa47', 'fcb5c309', 'fcc82909', 'feca6190', 'ff28f65a', 'ff805c23']
+400
+(['00d62c1b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '11852cab', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1caeab9d', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f876c06', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3e980e27', '3eda0437', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '42a50994', '4347f46a', '444801d8', '447fd412', '44d8ac46', '4612dd53', '484b58aa', '4938f0c2', '496994bd', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5168d44c', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '56dc2b01', '56ff96f3', '57aa92db', '5c0a986e', '5c2c9af4', '60b61512', '6150a2bd', '623ea044', '63613498', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6f8cd79b', '72322fa7', '73251a56', '7447852a', '74dd1130', '760b3cac', '776ffc46', '794b24be', '7b6016b9', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '855e0971', '85c4e7cd', '868de0fa', '88a10436', '890034e9', '8d510a79', '8e5a5113', '8eb1be9a', '8f2ea7aa', '90f3ed37', '913fb3ed', '91714a58', '928ad970', '93b581b8', '941d9a10', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '98cf29f8', '99fa7670', '9d9215db', '9dfd6313', '9edfc990', 'a1570a43', 'a2fd1cf0', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61f2674', 'a64e4611', 'a65b410d', 'a699fb00', 'a78176bb', 'a79310a0', 'a85d4709', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ae3edfdc', 'aedd82e4', 'af902bf9', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'ba26e723', 'ba97ae07', 'bb43febb', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3f564a4', 'c444b776', 'c8f0f002', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'ce22a75a', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'ddf7fa4f', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25ffba3', 'f2829549', 'f35d900a', 'f76d97a5', 'f8a8fe49', 'f8c80d96', 'fcc82909'], 274)
+['00d62c1b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '11852cab', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1caeab9d', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f876c06', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3e980e27', '3eda0437', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '42a50994', '4347f46a', '444801d8', '447fd412', '44d8ac46', '4612dd53', '484b58aa', '4938f0c2', '496994bd', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5168d44c', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '56dc2b01', '56ff96f3', '57aa92db', '5c0a986e', '5c2c9af4', '60b61512', '6150a2bd', '623ea044', '63613498', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6f8cd79b', '72322fa7', '73251a56', '7447852a', '74dd1130', '760b3cac', '776ffc46', '794b24be', '7b6016b9', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '855e0971', '85c4e7cd', '868de0fa', '88a10436', '890034e9', '8d510a79', '8e5a5113', '8eb1be9a', '8f2ea7aa', '90f3ed37', '913fb3ed', '91714a58', '928ad970', '93b581b8', '941d9a10', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '98cf29f8', '99fa7670', '9d9215db', '9dfd6313', '9edfc990', 'a1570a43', 'a2fd1cf0', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61f2674', 'a64e4611', 'a65b410d', 'a699fb00', 'a78176bb', 'a79310a0', 'a85d4709', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ae3edfdc', 'aedd82e4', 'af902bf9', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'ba26e723', 'ba97ae07', 'bb43febb', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3f564a4', 'c444b776', 'c8f0f002', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'ce22a75a', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'ddf7fa4f', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25ffba3', 'f2829549', 'f35d900a', 'f76d97a5', 'f8a8fe49', 'f8c80d96', 'fcc82909']
+274
+['007bbfb7', '017c7c7b', '3af2c5a8', '4522001f', '46f33fce', '4c4377d9', '539a4f51', '62c24649', '67e8384a', '6fa7a44f', '7fe24cdd', '8be77c9e', '8d5021e8', '9172f3a0', 'c3e719e8', 'cce03e0d', 'd13f3404']
+17
+['00d62c1b', '025d127b', '05f2a901', '06df4c85', '0a938d79', '0b148d64', '0e206a2e', '10fcaaa3', '1190e5a7', '150deff5', '178fcbfb', '1a07d186', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '239be575', '23b5c85d', '253bf280', '25d487eb', '272f95fa', '28e73c20', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '36fdfd69', '39e1d7f9', '3bd67248', '3de23699', '3eda0437', '3f7978a0', '40853293', '4290ef0e', '42a50994', '4347f46a', '4612dd53', '46442a0e', '47c1f68c', '4938f0c2', '49d1d64f', '4be741c5', '4c5c2cf0', '50846271', '50cb2852', '5168d44c', '53b68214', '54d82841', '54d9e175', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5daaa586', '623ea044', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '68b16354', '6aa20dc0', '6b9890af', '6cdd2623', '6d75e8bb', '6ecd11f4', '6f8cd79b', '72322fa7', '7468f01a', '746b3537', '77fdfe62', '780d0b14', '7837ac64', '7b6016b9', '7b7f7511', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '8a004b2b', '8e1813be', '8eb1be9a', '913fb3ed', '928ad970', '95990924', '97999447', '97a05b5b', '98cf29f8', '99fa7670', '9aec4887', '9af7a82c', '9dfd6313', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a416b8f3', 'a5313dff', 'a5f85a15', 'a65b410d', 'a699fb00', 'a740d043', 'a79310a0', 'a87f7484', 'a8c38be5', 'aba27056', 'aedd82e4', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b2862040', 'b527c5c6', 'b548a754', 'b7249182', 'b775ac94', 'b782dc8a', 'b8cdaf2b', 'b9b7f026', 'ba97ae07', 'bd4472b8', 'bda2d7a6', 'be94b721', 'beb8660c', 'c1d99e64', 'c59eb873', 'c8cbb738', 'c909285e', 'caa06a1f', 'ce602527', 'ce9e57f2', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd22278a0', 'd23f8c26', 'd4a91cb9', 'd511f180', 'd5d6de2d', 'd687bc17', 'd90796e8', 'd9fac9be', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'de1cd16c', 'e21d9049', 'e26a3af2', 'e509e548', 'e6721834', 'e73095fd', 'e8dc4411', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'f15e1fac', 'f1cefba8', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f9012d9b', 'fcb5c309', 'ff28f65a']
+173
+{5: 18, 3: 236, 2: 57, 4: 78, 6: 5, 8: 2, 7: 3, 10: 1}
+400
+get_data_for_key {'test': [{'input': [[7, 0, 7], [7, 0, 7], [7, 7, 0]]}], 'train': [{'input': [[0, 7, 7], [7, 7, 7], [0, 7, 7]], 'output': [[0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [7, 7, 7, 7, 7, 7, 7, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7]]}, {'input': [[4, 0, 4], [0, 0, 0], [0, 4, 0]], 'output': [[4, 0, 4, 0, 0, 0, 4, 0, 4], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 0, 0, 0, 0, 0, 4, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 0, 4, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 4, 0, 0, 0, 0]]}, {'input': [[0, 0, 0], [0, 0, 2], [2, 0, 2]], 'output': [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 2], [0, 0, 0, 0, 0, 0, 2, 0, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0, 0, 2], [2, 0, 2, 0, 0, 0, 2, 0, 2]]}, {'input': [[6, 6, 0], [6, 0, 0], [0, 6, 6]], 'output': [[6, 6, 0, 6, 6, 0, 0, 0, 0], [6, 0, 0, 6, 0, 0, 0, 0, 0], [0, 6, 6, 0, 6, 6, 0, 0, 0], [6, 6, 0, 0, 0, 0, 0, 0, 0], [6, 0, 0, 0, 0, 0, 0, 0, 0], [0, 6, 6, 0, 0, 0, 0, 0, 0], [0, 0, 0, 6, 6, 0, 6, 6, 0], [0, 0, 0, 6, 0, 0, 6, 0, 0], [0, 0, 0, 0, 6, 6, 0, 6, 6]]}, {'input': [[2, 2, 2], [0, 0, 0], [0, 2, 2]], 'output': [[2, 2, 2, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 2, 0, 2, 2, 0, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 2, 0, 2, 2]]}]}
+[]
+[]
+get_largest_array_size ('1f85a75f', 900)
+analyze_arrays {'analysis': {'equal_input_output': ['045e512c', '05269061', '08ed6ac7', '09629e4f', '0962bcdd', '0ca9ddb6', '0d3d703e', '0dfd9992', '11852cab', '1b60fb0c', '1bfc4729', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f876c06', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '23581191', '25d8a9c8', '25ff71a9', '264363fd', '29623171', '29c11459', '29ec7d0e', '2bcee788', '31aa019c', '321b1fc6', '32597951', '3345333e', '3618c87e', '3631a71a', '363442ee', '36d67576', '3906de3d', '3aa6fb7a', '3befdf3e', '3c9b0459', '3e980e27', '4093f84a', '41e4d17e', '4258a5f9', '444801d8', '447fd412', '44d8ac46', '484b58aa', '508bd3b6', '543a7ed5', '5521c0d9', '5582e5ca', '5c0a986e', '5c2c9af4', '60b61512', '6150a2bd', '63613498', '6855a6e4', '694f12f3', '6a1e5592', '6c434453', '6cf79266', '6d0160f0', '6d58a25d', '6e02f1e3', '6e19193c', '6e82a1ae', '73251a56', '74dd1130', '760b3cac', '776ffc46', '794b24be', '7ddcd7ec', '7df24a62', '8403a5d5', '890034e9', '8d510a79', '8e5a5113', '8f2ea7aa', '90f3ed37', '91714a58', '93b581b8', '941d9a10', '952a094c', '9565186b', '9d9215db', 'a48eeaf7', 'a61f2674', 'a64e4611', 'a78176bb', 'a85d4709', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'ae3edfdc', 'af902bf9', 'b230c067', 'b60334d2', 'b6afb2da', 'b8825c91', 'bb43febb', 'bdad9b1f', 'c0f76784', 'c3f564a4', 'c9f8e694', 'cbded52d', 'ce22a75a', 'd037b0a7', 'd06dbe63', 'd2abd087', 'd364b489', 'd43fd935', 'd4f3cd78', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd9f24cd1', 'ddf7fa4f', 'ded97339', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e76a88a6', 'e8593010', 'e9614598', 'e9afcf9a', 'ea32f347', 'ed36ccf7', 'ef135b50', 'f25ffba3', 'f8a8fe49', 'f8c80d96', 'fcc82909'], 'consistent_but_different_sizes': ['007bbfb7', '017c7c7b', '0520fde7', '137eaa0f', '1b2d62fb', '1fad071e', '2013d3e2', '27a28665', '28bf18c6', '3428a4f5', '39a8645d', '3af2c5a8', '445eab21', '44f52bb0', '4522001f', '46f33fce', '48d8fb45', '4c4377d9', '5117e062', '539a4f51', '5614dbcf', '5bd6f4ac', '62c24649', '6430c8c4', '662c240a', '6773b310', '67e8384a', '681b3aeb', '6d0aefbc', '6fa7a44f', '75b8110e', '7c008303', '7fe24cdd', '80af3007', '88a62173', '8be77c9e', '8d5021e8', '9172f3a0', '94f9d214', '995c5fa3', '99b1bc43', '9ecd008a', 'a61ba2ce', 'a68b268e', 'ae4f1146', 'bc1d5164', 'c3e719e8', 'c9e6f938', 'cce03e0d', 'cdecee7f', 'ce4f8723', 'cf98881b', 'd13f3404', 'd4469b4b', 'dae9d2b5', 'dc0a314f', 'e3497940', 'e98196ab', 'f2829549', 'f8ff0b80', 'fafffa47', 'ff805c23'], 'variable_output_sizes': ['00d62c1b', '025d127b', '05f2a901', '06df4c85', '0a938d79', '0b148d64', '0e206a2e', '10fcaaa3', '1190e5a7', '150deff5', '178fcbfb', '1a07d186', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '1f85a75f', '234bbc79', '239be575', '23b5c85d', '253bf280', '25d487eb', '272f95fa', '28e73c20', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '36fdfd69', '39e1d7f9', '3ac3eb23', '3bd67248', '3bdb4ada', '3de23699', '3eda0437', '3f7978a0', '40853293', '4290ef0e', '42a50994', '4347f46a', '4612dd53', '46442a0e', '469497ad', '47c1f68c', '4938f0c2', '496994bd', '49d1d64f', '4be741c5', '4c5c2cf0', '50846271', '50cb2852', '5168d44c', '53b68214', '54d82841', '54d9e175', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5daaa586', '623ea044', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '68b16354', '6aa20dc0', '6b9890af', '6cdd2623', '6d75e8bb', '6ecd11f4', '6f8cd79b', '72322fa7', '72ca375d', '7447852a', '7468f01a', '746b3537', '77fdfe62', '780d0b14', '7837ac64', '7b6016b9', '7b7f7511', '7e0986d6', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '846bdb03', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '8a004b2b', '8e1813be', '8eb1be9a', '8efcae92', '90c28cc7', '913fb3ed', '91413438', '928ad970', '95990924', '963e52fc', '97999447', '97a05b5b', '98cf29f8', '99fa7670', '9aec4887', '9af7a82c', '9dfd6313', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a3325580', 'a3df8b1e', 'a416b8f3', 'a5313dff', 'a5f85a15', 'a65b410d', 'a699fb00', 'a740d043', 'a79310a0', 'a87f7484', 'a8c38be5', 'aba27056', 'ac0a08a4', 'aedd82e4', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b7249182', 'b775ac94', 'b782dc8a', 'b8cdaf2b', 'b91ae062', 'b94a9452', 'b9b7f026', 'ba26e723', 'ba97ae07', 'bbc9ae5d', 'bd4472b8', 'bda2d7a6', 'be94b721', 'beb8660c', 'c1d99e64', 'c444b776', 'c59eb873', 'c8cbb738', 'c8f0f002', 'c909285e', 'caa06a1f', 'ce602527', 'ce9e57f2', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd22278a0', 'd23f8c26', 'd406998b', 'd4a91cb9', 'd511f180', 'd5d6de2d', 'd631b094', 'd687bc17', 'd90796e8', 'd9fac9be', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'de1cd16c', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e509e548', 'e50d258f', 'e6721834', 'e73095fd', 'e8dc4411', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'f15e1fac', 'f1cefba8', 'f25fbde4', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f8b3ba0a', 'f9012d9b', 'fcb5c309', 'feca6190', 'ff28f65a']}, 'counts': {'equal_input_output': 134, 'consistent_but_different_sizes': 62, 'variable_output_sizes': 204}}
+get_all_keys ['007bbfb7', '00d62c1b', '017c7c7b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0b148d64', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '10fcaaa3', '11852cab', '1190e5a7', '137eaa0f', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f85a75f', '1f876c06', '1fad071e', '2013d3e2', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '239be575', '23b5c85d', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '27a28665', '28bf18c6', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3428a4f5', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39a8645d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3af2c5a8', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3de23699', '3e980e27', '3eda0437', '3f7978a0', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '4290ef0e', '42a50994', '4347f46a', '444801d8', '445eab21', '447fd412', '44d8ac46', '44f52bb0', '4522001f', '4612dd53', '46442a0e', '469497ad', '46f33fce', '47c1f68c', '484b58aa', '48d8fb45', '4938f0c2', '496994bd', '49d1d64f', '4be741c5', '4c4377d9', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5117e062', '5168d44c', '539a4f51', '53b68214', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '5614dbcf', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5bd6f4ac', '5c0a986e', '5c2c9af4', '5daaa586', '60b61512', '6150a2bd', '623ea044', '62c24649', '63613498', '6430c8c4', '6455b5f5', '662c240a', '67385a82', '673ef223', '6773b310', '67a3c6ac', '67a423a3', '67e8384a', '681b3aeb', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6b9890af', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6ecd11f4', '6f8cd79b', '6fa7a44f', '72322fa7', '72ca375d', '73251a56', '7447852a', '7468f01a', '746b3537', '74dd1130', '75b8110e', '760b3cac', '776ffc46', '77fdfe62', '780d0b14', '7837ac64', '794b24be', '7b6016b9', '7b7f7511', '7c008303', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '7fe24cdd', '80af3007', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '846bdb03', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '88a62173', '890034e9', '8a004b2b', '8be77c9e', '8d5021e8', '8d510a79', '8e1813be', '8e5a5113', '8eb1be9a', '8efcae92', '8f2ea7aa', '90c28cc7', '90f3ed37', '913fb3ed', '91413438', '91714a58', '9172f3a0', '928ad970', '93b581b8', '941d9a10', '94f9d214', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '97a05b5b', '98cf29f8', '995c5fa3', '99b1bc43', '99fa7670', '9aec4887', '9af7a82c', '9d9215db', '9dfd6313', '9ecd008a', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a3325580', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61ba2ce', 'a61f2674', 'a64e4611', 'a65b410d', 'a68b268e', 'a699fb00', 'a740d043', 'a78176bb', 'a79310a0', 'a85d4709', 'a87f7484', 'a8c38be5', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ac0a08a4', 'ae3edfdc', 'ae4f1146', 'aedd82e4', 'af902bf9', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'b91ae062', 'b94a9452', 'b9b7f026', 'ba26e723', 'ba97ae07', 'bb43febb', 'bbc9ae5d', 'bc1d5164', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'be94b721', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3e719e8', 'c3f564a4', 'c444b776', 'c59eb873', 'c8cbb738', 'c8f0f002', 'c909285e', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'cce03e0d', 'cdecee7f', 'ce22a75a', 'ce4f8723', 'ce602527', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd13f3404', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4469b4b', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd631b094', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'd9fac9be', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc0a314f', 'dc1df850', 'dc433765', 'ddf7fa4f', 'de1cd16c', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e50d258f', 'e6721834', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e98196ab', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25fbde4', 'f25ffba3', 'f2829549', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f8a8fe49', 'f8b3ba0a', 'f8c80d96', 'f8ff0b80', 'f9012d9b', 'fafffa47', 'fcb5c309', 'fcc82909', 'feca6190', 'ff28f65a', 'ff805c23']
+400
+get_data_for_key [[7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 7, 0, 0, 0, 0, 7, 7, 0], [7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 7, 0, 0, 0, 0, 7, 7, 0], [7, 0, 7, 7, 0, 7, 0, 0, 0], [7, 0, 7, 7, 0, 7, 0, 0, 0], [7, 7, 0, 7, 7, 0, 0, 0, 0]]
+[]
+
+
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 00000000..96176771 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,1598 @@ + + + + + + + + + +Hierarchy – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Hierarchy

+
+ + + +
+ + + + +
+ + + +
+ + + +
+

source

+
+

FunctionsData

+
+
 FunctionsData ()
+
+

Data collected for a set of functions

+
+
+

Defining the Hierarchy

+

Defining the PCTHierarchy

+
+

source

+
+

PCTHierarchy

+
+
 PCTHierarchy (levels=0, cols=0, pre=None, post=None, name='pcthierarchy',
+               clear_names=True, links='single', history=False,
+               build=True, error_collector=None, namespace=None, **pargs)
+
+

A hierarchical perceptual control system, of PCTNodes.

+
+
# history=True
+# hierarchy, env = PCTHierarchy.load_from_file('testfiles/ARC/ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties', min=True, render=True, history=history)
+# hierarchy.summary()
+
+# score, dfig, pfigs = PCTHierarchy.run_and_draw_hierarchy(hierarchy, env, draw_file=True, draw_figsize=(5,5), history = history, plots="scEdges,scZero", steps=50)#, draw_file='/tmp/tmp.png')
+# print('Test score =',score)
+# dfig
+
+
+
# for pfig in pfigs:
+#     display(pfig)
+
+
+
+
+

Creating a Hierarchy

+

Create a hierarchy by defining the number of rows (levels) and columns.

+
+
from pct.functions import Constant
+
+
+
pre=Constant(5, name='precon')
+namespace=pre.namespace
+post=Constant(10, name='postcon', namespace=namespace)
+hpct = PCTHierarchy(3,3, pre=[pre], post=[post], history=True, clear_names=False, links="dense", namespace=namespace)
+hpct.hierarchy
+
+
[[<pct.nodes.PCTNode>,
+  <pct.nodes.PCTNode>,
+  <pct.nodes.PCTNode>],
+ [<pct.nodes.PCTNode>,
+  <pct.nodes.PCTNode>,
+  <pct.nodes.PCTNode>],
+ [<pct.nodes.PCTNode>,
+  <pct.nodes.PCTNode>,
+  <pct.nodes.PCTNode>]]
+
+
+
+
print(hpct.get_summary())
+
+
**************************
+PRE: 5.000 
+L0C0 0.000 0.000 0.000 0.000 
+L0C1 0.000 0.000 0.000 0.000 
+L0C2 0.000 0.000 0.000 0.000 
+L1C0 0.000 0.000 0.000 0.000 
+L1C1 0.000 0.000 0.000 0.000 
+L1C2 0.000 0.000 0.000 0.000 
+L2C0 0.000 0.000 0.000 0.000 
+L2C1 0.000 0.000 0.000 0.000 
+L2C2 0.000 0.000 0.000 0.000 
+POST: 10.000 
+
+
+
+
+
print(hpct.get_parameters_list())
+
+
[[[[5]], [[10]]], [[[[1, 1, 1]], [[0]], [[1]]], [[[1, 1, 1]], [[0]], [[1]]], [[[1, 1, 1]], [[0]], [[1]]]], [[[[1, 1, 1]], [[1, 1, 1]], [[1]]], [[[1, 1, 1]], [[1, 1, 1]], [[1]]], [[[1, 1, 1]], [[1, 1, 1]], [[1]]]], [[[[0]], [[1, 1, 1]], [[1]]], [[[0]], [[1, 1, 1]], [[1]]], [[[0]], [[1, 1, 1]], [[1]]]]]
+
+
+
+
print(hpct.get_grid())
+
+
[3, 3, 3]
+
+
+
+
hpct.change_namespace()
+
+
+
hpct.summary()
+
+
**************************
+pcthierarchy PCTHierarchy [3, 3, 3] b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+--------------------------
+PRE: precon Constant | 5 
+Level 0 Cols 3
+level0col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum WeightedSum | weights [1, 1, 1] | 0 | links  proportional3 proportional4 proportional5 
+PER: variable Variable | 0 
+COM: subtract Subtract | 0 | links  weighted_sum variable 
+OUT: proportional Proportional | gain 1 | 0 | links  subtract 
+----------------------------
+level0col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum1 WeightedSum | weights [1, 1, 1] | 0 | links  proportional3 proportional4 proportional5 
+PER: variable1 Variable | 0 
+COM: subtract1 Subtract | 0 | links  weighted_sum1 variable1 
+OUT: proportional1 Proportional | gain 1 | 0 | links  subtract1 
+----------------------------
+level0col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum2 WeightedSum | weights [1, 1, 1] | 0 | links  proportional3 proportional4 proportional5 
+PER: variable2 Variable | 0 
+COM: subtract2 Subtract | 0 | links  weighted_sum2 variable2 
+OUT: proportional2 Proportional | gain 1 | 0 | links  subtract2 
+----------------------------
+Level 1 Cols 3
+level1col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum4 WeightedSum | weights [1, 1, 1] | 0 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum3 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract3 Subtract | 0 | links  weighted_sum4 weighted_sum3 
+OUT: proportional3 Proportional | gain 1 | 0 | links  subtract3 
+----------------------------
+level1col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum6 WeightedSum | weights [1, 1, 1] | 0 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum5 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract4 Subtract | 0 | links  weighted_sum6 weighted_sum5 
+OUT: proportional4 Proportional | gain 1 | 0 | links  subtract4 
+----------------------------
+level1col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum8 WeightedSum | weights [1, 1, 1] | 0 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum7 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract5 Subtract | 0 | links  weighted_sum8 weighted_sum7 
+OUT: proportional5 Proportional | gain 1 | 0 | links  subtract5 
+----------------------------
+Level 2 Cols 3
+level2col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: constant Constant | 0 
+PER: weighted_sum9 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract6 Subtract | 0 | links  constant weighted_sum9 
+OUT: proportional6 Proportional | gain 1 | 0 | links  subtract6 
+----------------------------
+level2col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: constant1 Constant | 0 
+PER: weighted_sum10 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract7 Subtract | 0 | links  constant1 weighted_sum10 
+OUT: proportional7 Proportional | gain 1 | 0 | links  subtract7 
+----------------------------
+level2col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: constant2 Constant | 0 
+PER: weighted_sum11 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract8 Subtract | 0 | links  constant2 weighted_sum11 
+OUT: proportional8 Proportional | gain 1 | 0 | links  subtract8 
+----------------------------
+POST: postcon Constant | 10 
+**************************
+
+
+
+
#FunctionsList.getInstance().report()
+
+

Create a hierarchy from a configuration.

+
+
config = hpct.get_config()
+print(config)
+
+
{'type': 'PCTHierarchy', 'name': 'pcthierarchy', 'pre': {'pre0': {'type': 'Constant', 'name': 'precon', 'value': 5, 'links': {}}}, 'levels': {'level0': {'level': 0, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'level0col0', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 0, 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'weighted_sum', 1: 'variable'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {0: 'subtract'}, 'gain': 1}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'level0col1', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum1', 'value': 0, 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable1', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract1', 'value': 0, 'links': {0: 'weighted_sum1', 1: 'variable1'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional1', 'value': 0, 'links': {0: 'subtract1'}, 'gain': 1}}}}, 'col2': {'col': 2, 'node': {'type': 'PCTNode', 'name': 'level0col2', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum2', 'value': 0, 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable2', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract2', 'value': 0, 'links': {0: 'weighted_sum2', 1: 'variable2'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional2', 'value': 0, 'links': {0: 'subtract2'}, 'gain': 1}}}}}}, 'level1': {'level': 1, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'level1col0', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum4', 'value': 0, 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum3', 'value': 0, 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract3', 'value': 0, 'links': {0: 'weighted_sum4', 1: 'weighted_sum3'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional3', 'value': 0, 'links': {0: 'subtract3'}, 'gain': 1}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'level1col1', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum6', 'value': 0, 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum5', 'value': 0, 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract4', 'value': 0, 'links': {0: 'weighted_sum6', 1: 'weighted_sum5'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional4', 'value': 0, 'links': {0: 'subtract4'}, 'gain': 1}}}}, 'col2': {'col': 2, 'node': {'type': 'PCTNode', 'name': 'level1col2', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum8', 'value': 0, 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum7', 'value': 0, 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract5', 'value': 0, 'links': {0: 'weighted_sum8', 1: 'weighted_sum7'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional5', 'value': 0, 'links': {0: 'subtract5'}, 'gain': 1}}}}}}, 'level2': {'level': 2, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'level2col0', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum9', 'value': 0, 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract6', 'value': 0, 'links': {0: 'constant', 1: 'weighted_sum9'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional6', 'value': 0, 'links': {0: 'subtract6'}, 'gain': 1}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'level2col1', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant1', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum10', 'value': 0, 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract7', 'value': 0, 'links': {0: 'constant1', 1: 'weighted_sum10'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional7', 'value': 0, 'links': {0: 'subtract7'}, 'gain': 1}}}}, 'col2': {'col': 2, 'node': {'type': 'PCTNode', 'name': 'level2col2', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant2', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum11', 'value': 0, 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract8', 'value': 0, 'links': {0: 'constant2', 1: 'weighted_sum11'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional8', 'value': 0, 'links': {0: 'subtract8'}, 'gain': 1}}}}}}}, 'post': {'post0': {'type': 'Constant', 'name': 'postcon', 'value': 10, 'links': {}}}}
+
+
+
+
# h = PCTHierarchy.from_config(config, namespace=namespace)
+h = PCTHierarchy.from_config(config)
+
+
+
assert h.get_config() == hpct.get_config()
+
+
+
+

Viewing a Hierarchy

+

The hierarchy details can be viewed as a summary.

+
+
hpct.get_node(2,0).get_function('reference').set_value(1)
+hpct.get_node(2,1).get_function('reference').set_value(1)
+hpct.get_node(2,2).get_function('reference').set_value(1)
+for level in range(3):
+    for col in range(3):
+        hpct.get_node(level,col).get_function('output').set_property('gain', 10)
+hpct.summary()
+
+
**************************
+pcthierarchy PCTHierarchy [3, 3, 3] b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+--------------------------
+PRE: precon Constant | 5 
+Level 0 Cols 3
+level0col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum WeightedSum | weights [1, 1, 1] | 0 | links  proportional3 proportional4 proportional5 
+PER: variable Variable | 0 
+COM: subtract Subtract | 0 | links  weighted_sum variable 
+OUT: proportional Proportional | gain 10 | 0 | links  subtract 
+----------------------------
+level0col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum1 WeightedSum | weights [1, 1, 1] | 0 | links  proportional3 proportional4 proportional5 
+PER: variable1 Variable | 0 
+COM: subtract1 Subtract | 0 | links  weighted_sum1 variable1 
+OUT: proportional1 Proportional | gain 10 | 0 | links  subtract1 
+----------------------------
+level0col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum2 WeightedSum | weights [1, 1, 1] | 0 | links  proportional3 proportional4 proportional5 
+PER: variable2 Variable | 0 
+COM: subtract2 Subtract | 0 | links  weighted_sum2 variable2 
+OUT: proportional2 Proportional | gain 10 | 0 | links  subtract2 
+----------------------------
+Level 1 Cols 3
+level1col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum4 WeightedSum | weights [1, 1, 1] | 0 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum3 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract3 Subtract | 0 | links  weighted_sum4 weighted_sum3 
+OUT: proportional3 Proportional | gain 10 | 0 | links  subtract3 
+----------------------------
+level1col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum6 WeightedSum | weights [1, 1, 1] | 0 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum5 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract4 Subtract | 0 | links  weighted_sum6 weighted_sum5 
+OUT: proportional4 Proportional | gain 10 | 0 | links  subtract4 
+----------------------------
+level1col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: weighted_sum8 WeightedSum | weights [1, 1, 1] | 0 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum7 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract5 Subtract | 0 | links  weighted_sum8 weighted_sum7 
+OUT: proportional5 Proportional | gain 10 | 0 | links  subtract5 
+----------------------------
+Level 2 Cols 3
+level2col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: constant Constant | 1 
+PER: weighted_sum9 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract6 Subtract | 0 | links  constant weighted_sum9 
+OUT: proportional6 Proportional | gain 10 | 0 | links  subtract6 
+----------------------------
+level2col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: constant1 Constant | 1 
+PER: weighted_sum10 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract7 Subtract | 0 | links  constant1 weighted_sum10 
+OUT: proportional7 Proportional | gain 10 | 0 | links  subtract7 
+----------------------------
+level2col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b
+----------------------------
+REF: constant2 Constant | 1 
+PER: weighted_sum11 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract8 Subtract | 0 | links  constant2 weighted_sum11 
+OUT: proportional8 Proportional | gain 10 | 0 | links  subtract8 
+----------------------------
+POST: postcon Constant | 10 
+**************************
+
+
+

The hierarchy details can be viewed as a configuration. That configuration can be used to create a hierarchy, as shown above.

+
+
hpct.get_config()
+
+
{'type': 'PCTHierarchy',
+ 'name': 'pcthierarchy',
+ 'pre': {'pre0': {'type': 'Constant',
+   'name': 'precon',
+   'value': 5,
+   'links': {}}},
+ 'levels': {'level0': {'level': 0,
+   'nodes': {'col0': {'col': 0,
+     'node': {'type': 'PCTNode',
+      'name': 'level0col0',
+      'refcoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum',
+        'value': 0,
+        'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'},
+        'weights': [1, 1, 1]}},
+      'percoll': {'0': {'type': 'Variable',
+        'name': 'variable',
+        'value': 0,
+        'links': {}}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract',
+        'value': 0,
+        'links': {0: 'weighted_sum', 1: 'variable'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional',
+        'value': 0,
+        'links': {0: 'subtract'},
+        'gain': 10}}}},
+    'col1': {'col': 1,
+     'node': {'type': 'PCTNode',
+      'name': 'level0col1',
+      'refcoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum1',
+        'value': 0,
+        'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'},
+        'weights': [1, 1, 1]}},
+      'percoll': {'0': {'type': 'Variable',
+        'name': 'variable1',
+        'value': 0,
+        'links': {}}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract1',
+        'value': 0,
+        'links': {0: 'weighted_sum1', 1: 'variable1'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional1',
+        'value': 0,
+        'links': {0: 'subtract1'},
+        'gain': 10}}}},
+    'col2': {'col': 2,
+     'node': {'type': 'PCTNode',
+      'name': 'level0col2',
+      'refcoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum2',
+        'value': 0,
+        'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'},
+        'weights': [1, 1, 1]}},
+      'percoll': {'0': {'type': 'Variable',
+        'name': 'variable2',
+        'value': 0,
+        'links': {}}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract2',
+        'value': 0,
+        'links': {0: 'weighted_sum2', 1: 'variable2'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional2',
+        'value': 0,
+        'links': {0: 'subtract2'},
+        'gain': 10}}}}}},
+  'level1': {'level': 1,
+   'nodes': {'col0': {'col': 0,
+     'node': {'type': 'PCTNode',
+      'name': 'level1col0',
+      'refcoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum4',
+        'value': 0,
+        'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'},
+        'weights': [1, 1, 1]}},
+      'percoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum3',
+        'value': 0,
+        'links': {0: 'variable', 1: 'variable1', 2: 'variable2'},
+        'weights': [1, 1, 1]}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract3',
+        'value': 0,
+        'links': {0: 'weighted_sum4', 1: 'weighted_sum3'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional3',
+        'value': 0,
+        'links': {0: 'subtract3'},
+        'gain': 10}}}},
+    'col1': {'col': 1,
+     'node': {'type': 'PCTNode',
+      'name': 'level1col1',
+      'refcoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum6',
+        'value': 0,
+        'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'},
+        'weights': [1, 1, 1]}},
+      'percoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum5',
+        'value': 0,
+        'links': {0: 'variable', 1: 'variable1', 2: 'variable2'},
+        'weights': [1, 1, 1]}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract4',
+        'value': 0,
+        'links': {0: 'weighted_sum6', 1: 'weighted_sum5'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional4',
+        'value': 0,
+        'links': {0: 'subtract4'},
+        'gain': 10}}}},
+    'col2': {'col': 2,
+     'node': {'type': 'PCTNode',
+      'name': 'level1col2',
+      'refcoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum8',
+        'value': 0,
+        'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'},
+        'weights': [1, 1, 1]}},
+      'percoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum7',
+        'value': 0,
+        'links': {0: 'variable', 1: 'variable1', 2: 'variable2'},
+        'weights': [1, 1, 1]}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract5',
+        'value': 0,
+        'links': {0: 'weighted_sum8', 1: 'weighted_sum7'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional5',
+        'value': 0,
+        'links': {0: 'subtract5'},
+        'gain': 10}}}}}},
+  'level2': {'level': 2,
+   'nodes': {'col0': {'col': 0,
+     'node': {'type': 'PCTNode',
+      'name': 'level2col0',
+      'refcoll': {'0': {'type': 'Constant',
+        'name': 'constant',
+        'value': 1,
+        'links': {}}},
+      'percoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum9',
+        'value': 0,
+        'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'},
+        'weights': [1, 1, 1]}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract6',
+        'value': 0,
+        'links': {0: 'constant', 1: 'weighted_sum9'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional6',
+        'value': 0,
+        'links': {0: 'subtract6'},
+        'gain': 10}}}},
+    'col1': {'col': 1,
+     'node': {'type': 'PCTNode',
+      'name': 'level2col1',
+      'refcoll': {'0': {'type': 'Constant',
+        'name': 'constant1',
+        'value': 1,
+        'links': {}}},
+      'percoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum10',
+        'value': 0,
+        'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'},
+        'weights': [1, 1, 1]}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract7',
+        'value': 0,
+        'links': {0: 'constant1', 1: 'weighted_sum10'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional7',
+        'value': 0,
+        'links': {0: 'subtract7'},
+        'gain': 10}}}},
+    'col2': {'col': 2,
+     'node': {'type': 'PCTNode',
+      'name': 'level2col2',
+      'refcoll': {'0': {'type': 'Constant',
+        'name': 'constant2',
+        'value': 1,
+        'links': {}}},
+      'percoll': {'0': {'type': 'WeightedSum',
+        'name': 'weighted_sum11',
+        'value': 0,
+        'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'},
+        'weights': [1, 1, 1]}},
+      'comcoll': {'0': {'type': 'Subtract',
+        'name': 'subtract8',
+        'value': 0,
+        'links': {0: 'constant2', 1: 'weighted_sum11'}}},
+      'outcoll': {'0': {'type': 'Proportional',
+        'name': 'proportional8',
+        'value': 0,
+        'links': {0: 'subtract8'},
+        'gain': 10}}}}}}},
+ 'post': {'post0': {'type': 'Constant',
+   'name': 'postcon',
+   'value': 10,
+   'links': {}}}}
+
+
+

Get the output function, which will be the output function of the last node, or the last item of the post-processor functions, if present.

+
+
link = hpct.get_output_function()
+print(link.get_config())
+
+
{'type': 'Constant', 'name': 'postcon', 'value': 10, 'links': {}}
+
+
+

The hierarhcy can also be viewed graphically as a network of connected nodes.

+
+
import os
+
+
+
ahpct = PCTHierarchy(2,2, links="dense")
+
+test = 3
+if test==1:
+    g = ahpct.graph()
+    pos=graphviz_layout(g, prog='dot')
+    nx.draw(g, pos=pos, with_labels=True, font_size=12, font_weight='bold', node_color='red',  node_size=500)
+
+if test ==2:
+    g = ahpct.graph()
+    pos = nx.multipartite_layout(g, subset_key="layer", align='horizontal')
+    pos['constant1'][0]+=0.2
+    c = pos['constant1'][0]
+    print(c)
+    nx.draw(g, pos=pos, with_labels=True, font_weight='bold', node_color='red',  node_size=750, arrowsize=25)
+
+if test ==3:
+    if os.name=='nt':        
+        ahpct.draw(file="ahpct.png",  node_size=1500, figsize=(10,10))# with_labels=True, font_weight='bold', node_color='red',  node_size=500, arrowsize=25, align='vertical'
+
+
+
+

Running a hierarchy

+

The hierachy can be run once by calling itself. The verbose flag will print the computations to the screen.

+
+
hpct(verbose=True)
+
+
5.000 
+level0col0 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 0.000 
+level0col1 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 0.000 
+level0col2 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 0.000 
+level1col0 [0, [0, 0, 0], [1, 1, 1]] 0.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 
+level1col1 [0, [0, 0, 0], [1, 1, 1]] 0.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 
+level1col2 [0, [0, 0, 0], [1, 1, 1]] 0.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 
+level2col0 1.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 1.000 10.000 
+level2col1 1.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 1.000 10.000 
+level2col2 1.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 1.000 10.000 
+10.000 
+
+
+
10
+
+
+

A hierarchy can be executed with the “run()” method, providing the number of iterations to run.

+
+
hpct1 = PCTHierarchy(3,3, pre=[pre], post=[post], history=True, links="dense")
+namespace=hpct1.namespace
+hpct1.get_node(2,0).get_function('reference').set_value(1)
+hpct1.get_node(2,1).get_function('reference').set_value(1)
+hpct1.get_node(2,2).get_function('reference').set_value(1)
+for level in range(3):
+    for col in range(3):
+        hpct1.get_node(level,col).get_function('output').set_property('gain', 10)
+
+hpct1.run(10)
+
+
10
+
+
+
+
+

Viewing Data

+

If the hierarchy is created with the “history” flag equal to True, the data can be retrieved for each node. The node is accessed by specifying the row and column within the hierarchy.

+
+
print(hpct1.get_node(1,1).history.data)
+assert hpct1.get_node(1,1).history.data == {'refcoll': {'weighted_sum6': [0.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0]}, 'percoll': {'weighted_sum5': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, 'comcoll': {'subtract4': [0.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0]}, 'outcoll': {'proportional4': [0.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0]}}
+
+
{'refcoll': {'weighted_sum6': [0, 30, 30, 30, 30, 30, 30, 30, 30, 30]}, 'percoll': {'weighted_sum5': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'comcoll': {'subtract4': [0, 30, 30, 30, 30, 30, 30, 30, 30, 30]}, 'outcoll': {'proportional4': [0, 300, 300, 300, 300, 300, 300, 300, 300, 300]}}
+
+
+
+
+

Save and Load

+

Save a hierarchy to file.

+
+
import json
+
+
+
hpct1.save("hpct.json")
+
+

Create a hierarchy from file.

+
+
#loaded = PCTHierarchy.load("hpct.json", clear=False, namespace=namespace)
+loaded = PCTHierarchy.load("hpct.json", clear=False)
+loaded.summary()
+
+
**************************
+pcthierarchy PCTHierarchy [3, 3, 3] b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+--------------------------
+PRE: precon Constant | 5 
+Level 0 Cols 3
+level0col0 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: weighted_sum WeightedSum | weights [1, 1, 1] | 900 | links  proportional3 proportional4 proportional5 
+PER: variable Variable | 0 
+COM: subtract Subtract | 900 | links  weighted_sum variable 
+OUT: proportional Proportional | gain 10 | 9000 | links  subtract 
+----------------------------
+level0col1 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: weighted_sum1 WeightedSum | weights [1, 1, 1] | 900 | links  proportional3 proportional4 proportional5 
+PER: variable1 Variable | 0 
+COM: subtract1 Subtract | 900 | links  weighted_sum1 variable1 
+OUT: proportional1 Proportional | gain 10 | 9000 | links  subtract1 
+----------------------------
+level0col2 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: weighted_sum2 WeightedSum | weights [1, 1, 1] | 900 | links  proportional3 proportional4 proportional5 
+PER: variable2 Variable | 0 
+COM: subtract2 Subtract | 900 | links  weighted_sum2 variable2 
+OUT: proportional2 Proportional | gain 10 | 9000 | links  subtract2 
+----------------------------
+Level 1 Cols 3
+level1col0 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: weighted_sum4 WeightedSum | weights [1, 1, 1] | 30 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum3 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract3 Subtract | 30 | links  weighted_sum4 weighted_sum3 
+OUT: proportional3 Proportional | gain 10 | 300 | links  subtract3 
+----------------------------
+level1col1 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: weighted_sum6 WeightedSum | weights [1, 1, 1] | 30 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum5 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract4 Subtract | 30 | links  weighted_sum6 weighted_sum5 
+OUT: proportional4 Proportional | gain 10 | 300 | links  subtract4 
+----------------------------
+level1col2 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: weighted_sum8 WeightedSum | weights [1, 1, 1] | 30 | links  proportional6 proportional7 proportional8 
+PER: weighted_sum7 WeightedSum | weights [1, 1, 1] | 0 | links  variable variable1 variable2 
+COM: subtract5 Subtract | 30 | links  weighted_sum8 weighted_sum7 
+OUT: proportional5 Proportional | gain 10 | 300 | links  subtract5 
+----------------------------
+Level 2 Cols 3
+level2col0 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: constant Constant | 1 
+PER: weighted_sum9 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract6 Subtract | 1 | links  constant weighted_sum9 
+OUT: proportional6 Proportional | gain 10 | 10 | links  subtract6 
+----------------------------
+level2col1 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: constant1 Constant | 1 
+PER: weighted_sum10 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract7 Subtract | 1 | links  constant1 weighted_sum10 
+OUT: proportional7 Proportional | gain 10 | 10 | links  subtract7 
+----------------------------
+level2col2 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b
+----------------------------
+REF: constant2 Constant | 1 
+PER: weighted_sum11 WeightedSum | weights [1, 1, 1] | 0 | links  weighted_sum3 weighted_sum5 weighted_sum7 
+COM: subtract8 Subtract | 1 | links  constant2 weighted_sum11 
+OUT: proportional8 Proportional | gain 10 | 10 | links  subtract8 
+----------------------------
+POST: postcon Constant | 10 
+**************************
+
+
+
+
import networkx as nx
+import matplotlib.pyplot as plt
+
+
+
# https://matplotlib.org/3.1.0/gallery/color/named_colors.html
+loaded.draw(with_edge_labels=True, color_mapping={'w':'aqua','c':'limegreen','s':'goldenrod', 'p':'red', 'v':'silver'})
+
+
+
+

+
+
+
+
+
+
Examples
+

Build a hierarchy by adding nodes and functions manually.

+

Create an empty hierarchy.

+
+
myhpct = PCTHierarchy()
+namespace=myhpct.namespace
+myhpct.summary(build=False)
+
+
**************************
+pcthierarchy PCTHierarchy [] b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+--------------------------
+PRE: None
+POST: None
+**************************
+
+
+

Add a node. Then nodes at particular positions.

+
+
myhpct.add_node(PCTNode(namespace=namespace))
+myhpct.add_node(PCTNode(namespace=namespace), level=1)
+myhpct.add_node(PCTNode(namespace=namespace), level=0)
+myhpct.summary(build=False)
+
+
**************************
+pcthierarchy PCTHierarchy [2, 1] b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+--------------------------
+PRE: None
+Level 0 Cols 2
+pctnode2 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+----------------------------
+REF: constant2 Constant | 0 
+PER: variable2 Variable | 0 
+COM: subtract2 Subtract | 0 
+OUT: proportional2 Proportional | gain 1 | 0 
+----------------------------
+pctnode PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+----------------------------
+REF: constant Constant | 0 
+PER: variable Variable | 0 
+COM: subtract Subtract | 0 
+OUT: proportional Proportional | gain 1 | 0 
+----------------------------
+Level 1 Cols 1
+pctnode1 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+----------------------------
+REF: constant1 Constant | 0 
+PER: variable1 Variable | 0 
+COM: subtract1 Subtract | 0 
+OUT: proportional1 Proportional | gain 1 | 0 
+----------------------------
+POST: None
+**************************
+
+
+

Replace functions at particular positions in the hierarchy.

+
+
myhpct.insert_function(level=0, col=0, collection="perception", function=Proportional(3, name="prop2", namespace=namespace))
+myhpct.insert_function(level=1, col=0, collection="perception", function=WeightedSum(weights=[1,1], name="wsum", namespace=namespace))
+myhpct.insert_function(level=0, col=1, collection="reference", function=Proportional(1, name="passthru", namespace=namespace))
+
+

Add pre and post processor functions.

+
+
myhpct.add_preprocessor(Constant(1, name="cons1", namespace=namespace))
+myhpct.add_preprocessor(Proportional(5, name="prop1", namespace=namespace))
+myhpct.add_postprocessor(Proportional(5, name="postprop1", namespace=namespace))
+myhpct.add_postprocessor(Proportional(5, name="postprop2", namespace=namespace))
+
+

Link the functions together.

+
+
myhpct.set_links("prop1", "cons1")
+myhpct.set_links("prop2", "prop1")
+myhpct.add_links("wsum", "prop2", "variable")
+myhpct.set_links("passthru", "proportional1")
+myhpct.set_links("postprop1", "proportional")
+myhpct.set_links("postprop2", "postprop1")
+
+
+
myhpct.get_node(0,0).get_function('reference').set_value(1)
+myhpct.get_node(1,0).get_function('reference').set_value(1)
+myhpct.get_node(0,0).get_function('output').set_property('gain', 10)
+myhpct.get_node(0,1).get_function('output').set_property('gain', 10)
+myhpct.get_node(1,0).get_function('output').set_property('gain', 10)
+myhpct.summary(build=True)
+
+
**************************
+pcthierarchy PCTHierarchy [2, 1] b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+--------------------------
+PRE: cons1 Constant | 1 
+prop1 Proportional | gain 5 | 0 | links  cons1 
+Level 0 Cols 2
+pctnode2 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+----------------------------
+REF: constant2 Constant | 1 
+PER: prop2 Proportional | gain 3 | 0 | links  prop1 
+COM: subtract2 Subtract | 0 | links  constant2 prop2 
+OUT: proportional2 Proportional | gain 10 | 0 | links  subtract2 
+----------------------------
+pctnode PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+----------------------------
+REF: passthru Proportional | gain 1 | 0 | links  proportional1 
+PER: variable Variable | 0 
+COM: subtract Subtract | 0 | links  passthru variable 
+OUT: proportional Proportional | gain 10 | 0 | links  subtract 
+----------------------------
+Level 1 Cols 1
+pctnode1 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b
+----------------------------
+REF: constant1 Constant | 1 
+PER: wsum WeightedSum | weights [1, 1] | 0 | links  prop2 variable 
+COM: subtract1 Subtract | 0 | links  constant1 wsum 
+OUT: proportional1 Proportional | gain 10 | 0 | links  subtract1 
+----------------------------
+POST: postprop1 Proportional | gain 5 | 0 | links  proportional 
+postprop2 Proportional | gain 5 | 0 | links  postprop1 
+**************************
+
+
+
+
myhpctconfig = myhpct.get_config()
+#print(myhpctconfig)
+assert myhpctconfig == {'type': 'PCTHierarchy', 'name': 'pcthierarchy', 'pre': {'pre0': {'type': 'Constant', 'name': 'cons1', 'value': 1, 'links': {}}, 'pre1': {'type': 'Proportional', 'name': 'prop1', 'value': 0, 'links': {0: 'cons1'}, 'gain': 5}}, 'levels': {'level0': {'level': 0, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'pctnode2', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant2', 'value': 1, 'links': {}}}, 'percoll': {'0': {'type': 'Proportional', 'name': 'prop2', 'value': 0, 'links': {0: 'prop1'}, 'gain': 3}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract2', 'value': 0, 'links': {0: 'constant2', 1: 'prop2'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional2', 'value': 0, 'links': {0: 'subtract2'}, 'gain': 10}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'pctnode', 'refcoll': {'0': {'type': 'Proportional', 'name': 'passthru', 'value': 0, 'links': {0: 'proportional1'}, 'gain': 1}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'passthru', 1: 'variable'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {0: 'subtract'}, 'gain': 10}}}}}}, 'level1': {'level': 1, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'pctnode1', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant1', 'value': 1, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'wsum', 'value': 0, 'links': {0: 'prop2', 1: 'variable'}, 'weights': [1.0, 1.0]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract1', 'value': 0, 'links': {0: 'constant1', 1: 'wsum'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional1', 'value': 0, 'links': {0: 'subtract1'}, 'gain': 10}}}}}}}, 'post': {'post0': {'type': 'Proportional', 'name': 'postprop1', 'value': 0, 'links': {0: 'proportional'}, 'gain': 5}, 'post1': {'type': 'Proportional', 'name': 'postprop2', 'value': 0, 'links': {0: 'postprop1'}, 'gain': 5}}}
+
+

Define the order in which the node will be processed.

+
+
myhpct.set_order(["pctnode2", "pctnode1", "pctnode"])
+
+

Run the hierarchy once.

+
+
out = myhpct(verbose=True)
+print(out)
+assert out == -35000
+
+
1.000 5.000 
+pctnode2 1.000 15.000 -14.000 -140.000 
+pctnode1 1.000 [15, [15, 0], [1, 1]] 15.000 -14.000 -140.000 
+pctnode -140.000 0.000 -140.000 -1400.000 
+-7000.000 -35000.000 
+-35000
+
+
+
+
# config =  {'type': 'Individual', 'name': 'pcthierarchy', 'pre': {'pre0': {'type': 'CartPoleV1', 'name': 'CartPoleV1', 'value': [0.03498833197860944, 0.20994561633454428, 0.012668159509212712, -0.2705237130920193, 0.047656152654718356], 'links': {0: 'Action1'}, 'env_name': 'CartPole-v1', 'reward': 1.0, 'done': False, 'info': {}}, 'pre1': {'type': 'IndexedParameter', 'name': 'ICV', 'value': 0.20994561633454428, 'links': {0: 'CartPoleV1'}, 'index': 1}, 'pre2': {'type': 'IndexedParameter', 'name': 'ICP', 'value': 0.03498833197860944, 'links': {0: 'CartPoleV1'}, 'index': 0}, 'pre3': {'type': 'IndexedParameter', 'name': 'IPV', 'value': -0.2705237130920193, 'links': {0: 'CartPoleV1'}, 'index': 3}, 'pre4': {'type': 'IndexedParameter', 'name': 'IPA', 'value': 0.012668159509212712, 'links': {0: 'CartPoleV1'}, 'index': 2}}, 'levels': {'level0': {'level': 0, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'L0C0', 'refcoll': {'0': {'type': 'EAConstant', 'name': 'RL0C0', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'EAWeightedSum', 'name': 'PL0C0', 'value': -0.2705237130920193, 'links': {0: 'ICV', 1: 'ICP', 2: 'IPV', 3: 'IPA'}, 'weights': [0, 0, 1, 0]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'CL0C0', 'value': 0.2705237130920193, 'links': {0: 'RL0C0', 1: 'PL0C0'}}}, 'outcoll': {'0': {'type': 'EAProportional', 'name': 'OL0C0', 'value': -0.05046166000036782, 'links': {0: 'CL0C0'}, 'gain': -0.1865332226280776}}}}}}}, 'post': {'post0': {'type': 'EAWeightedSum', 'name': 'Action1', 'value': -0.005282911840894066, 'links': {0: 'OL0C0'}, 'weights': [0.10469159835121472]}}}
+# ind = PCTHierarchy.from_config(config)
+
+
+
from pct.errors import RootSumSquaredError, TotalError
+
+er = RootSumSquaredError()
+te = TotalError(error_response=er, limit=250,min=True)   
+te.add_error_data([1, 2])
+print(te)
+
+
+hpct = PCTHierarchy(1,1,error_collector=te)
+hpct.run(steps=5, verbose=True)
+
+
+err=te.error()
+print(err)
+
+
TotalError limit:250, limit_exceeded:False, : RootSumSquaredError error_response:2.23606797749979
+[0] 
+level0col0 0.000 0.000 0.000 0.000 
+
+Current score=2.23606797749979
+[1] 
+level0col0 0.000 0.000 0.000 0.000 
+
+Current score=2.23606797749979
+[2] 
+level0col0 0.000 0.000 0.000 0.000 
+
+Current score=2.23606797749979
+[3] 
+level0col0 0.000 0.000 0.000 0.000 
+
+Current score=2.23606797749979
+[4] 
+level0col0 0.000 0.000 0.000 0.000 
+
+Current score=2.23606797749979
+2.23606797749979
+
+
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..29114c9c --- /dev/null +++ b/index.html @@ -0,0 +1,838 @@ + + + + + + + + + + +Perceptual Control Theory – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Perceptual Control Theory

+
+ +
+
+ A python library for creating perceptual control hierarchies. +
+
+ + +
+ + + + +
+ + + +
+ + + +

With this library you can create and run simple or complex hierarchies of perceptual control systems as well as make use of the power of the Python platform and its rich set of packages.

+

In the context of this library a single control system comprising a perceptual, reference, comparator and output function is called a Node. The functions therein can be configured by the user.

+

A hierarchy is defined by a collection of nodes.

+
+

Install

+

pip install pct

+
+
+

Import

+

Examples of importing the library functionality.

+

import pct as p

+

from pct.hierarchy import Hierarchy

+

from pct import *

+
+
+

How to use

+

Import modules from the PCT library.

+
+
from pct.nodes import PCTNode
+
+

For the purposes of this example define a world model. This would not be required if the real world is used, or a simulation such as OpenAI Gym.

+
+
def velocity_model(velocity,  force , mass):
+    velocity = velocity + force / mass
+    return velocity
+
+# World value
+mass = 50
+
+

Create a PCTNode, a control system unit comprising a reference, perception, comparator and output function. The default value for the reference is 1. With the history flag set, the data for each iteration is recorded for later plotting.

+
+
pctnode = PCTNode(history=True)
+
+

Call the node repeatedly to control the perception of velocity. With the verbose flag set, the control values are printed. In this case the printed values are the iteration number, the (velocity) reference, the perception, the error and the (force) output.

+
+
for i in range(40):
+    print(i, end=" ")
+    force = pctnode(verbose=True)
+    velocity = velocity_model(pctnode.get_perception_value(), force, mass)
+    pctnode.set_perception_value(velocity)
+
+
0 0.000 0.000 0.000 0.000 
+1 0.000 0.000 0.000 0.000 
+2 0.000 0.000 0.000 0.000 
+3 0.000 0.000 0.000 0.000 
+4 0.000 0.000 0.000 0.000 
+5 0.000 0.000 0.000 0.000 
+6 0.000 0.000 0.000 0.000 
+7 0.000 0.000 0.000 0.000 
+8 0.000 0.000 0.000 0.000 
+9 0.000 0.000 0.000 0.000 
+10 0.000 0.000 0.000 0.000 
+11 0.000 0.000 0.000 0.000 
+12 0.000 0.000 0.000 0.000 
+13 0.000 0.000 0.000 0.000 
+14 0.000 0.000 0.000 0.000 
+15 0.000 0.000 0.000 0.000 
+16 0.000 0.000 0.000 0.000 
+17 0.000 0.000 0.000 0.000 
+18 0.000 0.000 0.000 0.000 
+19 0.000 0.000 0.000 0.000 
+20 0.000 0.000 0.000 0.000 
+21 0.000 0.000 0.000 0.000 
+22 0.000 0.000 0.000 0.000 
+23 0.000 0.000 0.000 0.000 
+24 0.000 0.000 0.000 0.000 
+25 0.000 0.000 0.000 0.000 
+26 0.000 0.000 0.000 0.000 
+27 0.000 0.000 0.000 0.000 
+28 0.000 0.000 0.000 0.000 
+29 0.000 0.000 0.000 0.000 
+30 0.000 0.000 0.000 0.000 
+31 0.000 0.000 0.000 0.000 
+32 0.000 0.000 0.000 0.000 
+33 0.000 0.000 0.000 0.000 
+34 0.000 0.000 0.000 0.000 
+35 0.000 0.000 0.000 0.000 
+36 0.000 0.000 0.000 0.000 
+37 0.000 0.000 0.000 0.000 
+38 0.000 0.000 0.000 0.000 
+39 0.000 0.000 0.000 0.000 
+
+
+

Using the plotly library plot the data. The graph shows the perception being controlled to match the reference value.

+
import plotly.graph_objects as go
+fig = go.Figure(layout_title_text="Velocity Goal")
+fig.add_trace(go.Scatter(y=pctnode.history.data['refcoll']['constant'], name="ref"))
+fig.add_trace(go.Scatter(y=pctnode.history.data['percoll']['variable'], name="perc"))
+

This following code is only for the purposes of displaying image of the graph generated by the above code.

+
+
from IPython.display import Image
+
+
+
Image(url='http://www.perceptualrobots.com/wp-content/uploads/2020/08/pct_node_plot.png')
+
+ +
+
+

This shows a very basic example of the use of the PCT library. For more advanced functionality see the API documentation at https://perceptualrobots.github.io/pct/.

+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/microgrid.html b/microgrid.html new file mode 100644 index 00000000..ee9b930d --- /dev/null +++ b/microgrid.html @@ -0,0 +1,786 @@ + + + + + + + + + +MicroGrid – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

MicroGrid

+
+ + + +
+ + + + +
+ + + +
+ + + +
+
from os import getcwd
+# getcwd()
+
+
+

source

+
+

MicroGridEnvPlus

+
+
 MicroGridEnvPlus (**kwargs)
+
+

*The main OpenAI Gym class.

+

It encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.

+

The main API methods that users of this class need to know are:

+
    +
  • :meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.
  • +
  • :meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.
  • +
  • :meth:render - Renders the environment observation with modes depending on the output
  • +
  • :meth:close - Closes the environment, important for rendering where pygame is imported
  • +
+

And set the following attributes:

+
    +
  • :attr:action_space - The Space object corresponding to valid actions
  • +
  • :attr:observation_space - The Space object corresponding to valid observations
  • +
  • :attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards
  • +
  • :attr:spec - An environment spec that contains the information used to initialise the environment from gym.make
  • +
  • :attr:metadata - The metadata of the environment, i.e. render modes
  • +
  • :attr:np_random - The random number generator for the environment
  • +
+

Note: a default reward range set to :math:(-\infty,+\infty) already exists. Set it if you want a narrower range.*

+
+

source

+
+
+

MicroGridEnv0Plus

+
+
 MicroGridEnv0Plus (**kwargs)
+
+

*The main OpenAI Gym class.

+

It encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.

+

The main API methods that users of this class need to know are:

+
    +
  • :meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.
  • +
  • :meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.
  • +
  • :meth:render - Renders the environment observation with modes depending on the output
  • +
  • :meth:close - Closes the environment, important for rendering where pygame is imported
  • +
+

And set the following attributes:

+
    +
  • :attr:action_space - The Space object corresponding to valid actions
  • +
  • :attr:observation_space - The Space object corresponding to valid observations
  • +
  • :attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards
  • +
  • :attr:spec - An environment spec that contains the information used to initialise the environment from gym.make
  • +
  • :attr:metadata - The metadata of the environment, i.e. render modes
  • +
  • :attr:np_random - The random number generator for the environment
  • +
+

Note: a default reward range set to :math:(-\infty,+\infty) already exists. Set it if you want a narrower range.*

+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/network.html b/network.html new file mode 100644 index 00000000..1e3842bd --- /dev/null +++ b/network.html @@ -0,0 +1,738 @@ + + + + + + + + + + +Network – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Network

+
+ +
+
+ A utilities for network connectivity. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

source

+
+

Server

+
+
 Server (host='localhost', port=6666, buf_size=1024)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

Client

+
+
 Client (host='localhost', port=6666, buf_size=1024)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

ClientConnectionManager

+
+
 ClientConnectionManager (host='localhost', port=6666, buf_size=1024)
+
+

A utility for managing a client socket connection.

+
+

source

+
+
+

ServerConnectionManager

+
+
 ServerConnectionManager (host='localhost', port=6666, buf_size=1024)
+
+

A utility for managing a client socket connection.

+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/nodes.html b/nodes.html new file mode 100644 index 00000000..564b23e7 --- /dev/null +++ b/nodes.html @@ -0,0 +1,1032 @@ + + + + + + + + + + +Nodes – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Nodes

+
+ +
+
+ A node is a single control unit representing a feedback control loop. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

Overview

+

A node comprises four functions, reference, perceptual, comparator and output. Executing the node will run each of the functions in the order indicated above and return the output value.

+

The functions can actually be a collection of functions, each executed in the order they are added. This allows a chain of functions in case pre-processing is required, or post-processing in the case of the output.

+
+

source

+
+

ControlUnitIndices

+
+
 ControlUnitIndices (value, names=None, module=None, qualname=None,
+                     type=None, start=1)
+
+

An enumeration.

+
+

source

+
+
+

PCTNode

+
+
 PCTNode (reference=None, perception=None, comparator=None, output=None,
+          default=True, name='pctnode', history=False, build_links=False,
+          mode=0, namespace=None, **pargs)
+
+

A single PCT controller.

+
+
#node = PCTNode()
+#node.summary()
+
+
+

source

+
+
+

PCTNodeData

+
+
 PCTNodeData (name='pctnodedata')
+
+

Data collected for a PCTNode

+
+
+
+

Creating a Node

+

A node can be created simply.

+
+
node = PCTNode()
+node.summary()
+
+
pctnode PCTNode e2723476-b938-11ee-9ede-5c879c15de65
+----------------------------
+REF: constant Constant | 0 
+PER: variable Variable | 0 
+COM: subtract Subtract | 0 | links  constant variable 
+OUT: proportional Proportional | gain 1 | 0 | links  subtract 
+----------------------------
+
+
+

That creates a node with default functions. Those are, a constant of 1 for the reference, a variable, with initial value 0, for the perception and a proportional function for the output, with a gain of 10.

+

A node can also be created by providing a name, and setting the history to True. The latter means that the values of all the functions are recorded during execution, which is useful for plotting the data later, as can be seen below.

+
+
dynamic_module_import( 'pct.functions', 'Constant')
+
+
+
reference = Constant(1)
+namespace=reference.namespace
+
+
+
node = PCTNode(name="mypctnode", history=True, reference = reference, output=Proportional(10, namespace=namespace), namespace=namespace)
+node.summary()
+
+
mypctnode PCTNode e281ebf9-b938-11ee-944f-5c879c15de65
+----------------------------
+REF: constant Constant | 1 
+PER: variable Variable | 0 
+COM: subtract Subtract | 0 | links  constant variable 
+OUT: proportional Proportional | gain 10 | 0 | links  subtract 
+----------------------------
+
+
+

Another way of creating a node is by first declaring the functions you want and passing them into the constructor.

+
+
UniqueNamer.getInstance().clear()
+r = Variable(0, name="velocity_reference")
+p = Constant(10, name="constant_perception")
+o = Integration(10, 100, name="integrator")
+integratingnode = PCTNode(reference=r, perception=p, output=o, name="integratingnode", history=True)
+
+

Yet another way to create a node is from a text configuration.

+
+
config_node = PCTNode.from_config({ 'name': 'mypctnode', 
+    'refcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 10}}, 
+    'percoll': {'0': {'type': 'Variable', 'name': 'velocity', 'value': 0.2, 'links': {}}}, 
+    'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 1, 'links': {0: 'constant', 1: 'velocity'}}}, 
+    'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 10, 'links': {0: 'subtract'}, 'gain': 10}}})
+# config_node = PCTNode.from_config({ 'name': 'mypctnode1', 
+#     'refcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 10}}, 
+#     'percoll': {'0': {'type': 'Variable', 'name': 'velocity', 'value': 0.2, 'links': {}}}, 
+#     'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 1, 'links': {0: 'constant', 1: 'velocity'}}}, 
+#     'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 10, 'links': {0: 'subtract'}, 'gain': 10}}}, namespace=namespace)
+
+
+
+

Viewing Nodes

+

The details of a node can be viewed in a number of ways, which is useful for checking the configuration. The summary method prints to the screen. The get_config method returns a string in a JSON format.

+
+
integratingnode.summary()
+
+
integratingnode PCTNode e28f596d-b938-11ee-a963-5c879c15de65
+----------------------------
+REF: velocity_reference Variable | 0 
+PER: constant_perception Constant | 10 
+COM: subtract Subtract | 0 | links  velocity_reference constant_perception 
+OUT: integrator Integration | gain 10 slow 100  | 0 | links  subtract 
+----------------------------
+
+
+
+
#print(integratingnode.get_config())
+assert integratingnode.get_config() == {'type': 'PCTNode', 'name': 'integratingnode', 'refcoll': {'0': {'type': 'Variable', 'name': 'velocity_reference', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'Constant', 'name': 'constant_perception', 'value': 10, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'velocity_reference', 1: 'constant_perception'}}}, 'outcoll': {'0': {'type': 'Integration', 'name': 'integrator', 'value': 0, 'links': {0: 'subtract'}, 'gain': 10, 'slow': 100}}}
+integratingnode.get_config()
+
+
{'type': 'PCTNode',
+ 'name': 'integratingnode',
+ 'refcoll': {'0': {'type': 'Variable',
+   'name': 'velocity_reference',
+   'value': 0,
+   'links': {}}},
+ 'percoll': {'0': {'type': 'Constant',
+   'name': 'constant_perception',
+   'value': 10,
+   'links': {}}},
+ 'comcoll': {'0': {'type': 'Subtract',
+   'name': 'subtract',
+   'value': 0,
+   'links': {0: 'velocity_reference', 1: 'constant_perception'}}},
+ 'outcoll': {'0': {'type': 'Integration',
+   'name': 'integrator',
+   'value': 0,
+   'links': {0: 'subtract'},
+   'gain': 10,
+   'slow': 100}}}
+
+
+

A node can also be viewed graphically as a network of connected nodes.

+
+
import os
+
+
+
if os.name=='nt':
+    integratingnode.draw(node_size=2000, figsize=(8,4))
+
+
+
+

+
+
+
+
+
+
+

Running a Node

+

For the purposes of this example we first create a function which is a very basic model of the physical environment. It defines how the world behaves when we pass it the output of the control system.

+
+
def velocity_model(velocity,  force , mass):
+    velocity = velocity + force / mass
+    return velocity
+
+mass = 50
+force = 0
+
+

In the following cell we start with a velocity of zero. The node is run once (second line), the output of which is the force to apply in the world velocity_model. That returns the updated velocity which we pass back into the node to be used in the next iteration of the loop.

+
+
velocity=0
+force = node()
+velocity = velocity_model(velocity, force, mass)
+node.set_perception_value(velocity)
+print(force)
+assert force == 10
+
+
10
+
+
+

The node can be run in a loop as shown below. With verbose set to True the output of each loop will be printed to the screen.

+
+
pctnode = PCTNode(history=True)
+pctnode.set_function_name("perception", "velocity")
+pctnode.set_function_name("reference", "reference")
+
+for i in range(40):
+    print(i, end=" ")
+    force = pctnode(verbose=True)
+    vel = velocity_model(pctnode.get_perception_value(), force, mass)
+    pctnode.set_perception_value(vel)
+
+
0 0.000 0.000 0.000 0.000 
+1 0.000 0.000 0.000 0.000 
+2 0.000 0.000 0.000 0.000 
+3 0.000 0.000 0.000 0.000 
+4 0.000 0.000 0.000 0.000 
+5 0.000 0.000 0.000 0.000 
+6 0.000 0.000 0.000 0.000 
+7 0.000 0.000 0.000 0.000 
+8 0.000 0.000 0.000 0.000 
+9 0.000 0.000 0.000 0.000 
+10 0.000 0.000 0.000 0.000 
+11 0.000 0.000 0.000 0.000 
+12 0.000 0.000 0.000 0.000 
+13 0.000 0.000 0.000 0.000 
+14 0.000 0.000 0.000 0.000 
+15 0.000 0.000 0.000 0.000 
+16 0.000 0.000 0.000 0.000 
+17 0.000 0.000 0.000 0.000 
+18 0.000 0.000 0.000 0.000 
+19 0.000 0.000 0.000 0.000 
+20 0.000 0.000 0.000 0.000 
+21 0.000 0.000 0.000 0.000 
+22 0.000 0.000 0.000 0.000 
+23 0.000 0.000 0.000 0.000 
+24 0.000 0.000 0.000 0.000 
+25 0.000 0.000 0.000 0.000 
+26 0.000 0.000 0.000 0.000 
+27 0.000 0.000 0.000 0.000 
+28 0.000 0.000 0.000 0.000 
+29 0.000 0.000 0.000 0.000 
+30 0.000 0.000 0.000 0.000 
+31 0.000 0.000 0.000 0.000 
+32 0.000 0.000 0.000 0.000 
+33 0.000 0.000 0.000 0.000 
+34 0.000 0.000 0.000 0.000 
+35 0.000 0.000 0.000 0.000 
+36 0.000 0.000 0.000 0.000 
+37 0.000 0.000 0.000 0.000 
+38 0.000 0.000 0.000 0.000 
+39 0.000 0.000 0.000 0.000 
+
+
+
+
+

Save and Load

+

Save a node to file.

+
+
import json
+
+
+
integratingnode.save("inode.json")
+
+

Create a node from file.

+
+
nnode = PCTNode.load("inode.json")
+nnode.summary()
+print(nnode.get_config())
+
+
integratingnode PCTNode 576b00b4-b939-11ee-9e11-5c879c15de65
+----------------------------
+REF: velocity_reference Variable | 0 
+PER: constant_perception Constant | 10 
+COM: subtract Subtract | 0 | links  velocity_reference constant_perception 
+OUT: integrator Integration | gain 10 slow 100  | 0 | links  subtract 
+----------------------------
+{'type': 'PCTNode', 'name': 'integratingnode', 'refcoll': {'0': {'type': 'Variable', 'name': 'velocity_reference', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'Constant', 'name': 'constant_perception', 'value': 10, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'velocity_reference', 1: 'constant_perception'}}}, 'outcoll': {'0': {'type': 'Integration', 'name': 'integrator', 'value': 0, 'links': {0: 'subtract'}, 'gain': 10, 'slow': 100}}}
+
+
+
+
print(nnode.get_summary())
+
+
0.000 10.000 0.000 0.000
+
+
+
+
+

Plotting the Data

+

As the history of the variable pctnode was set to True the data is available for analysis. It can be plotted with python libraries such as matplotlib or plotly. Here is an example with the latter.

+

The graph shows the changing perception values as it is controlled to match the reference value.

+
import plotly.graph_objects as go
+fig = go.Figure(layout_title_text="Velocity Goal")
+fig.add_trace(go.Scatter(y=pctnode.history.data['refcoll']['reference'], name="ref"))
+fig.add_trace(go.Scatter(y=pctnode.history.data['percoll']['velocity'], name="perc"))
+

This following code is only for the purposes of displaying image of the graph generated by the above code.

+
+
from IPython.display import Image
+
+
+
Image(url='http://www.perceptualrobots.com/wp-content/uploads/2020/08/pct_node_plot.png')
+
+ +
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/plotting.html b/plotting.html new file mode 100644 index 00000000..daefc722 --- /dev/null +++ b/plotting.html @@ -0,0 +1,824 @@ + + + + + + + + + + +Plotting – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Plotting

+
+ +
+
+ Plotting classes. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

source

+
+

SubPlotter

+
+
 SubPlotter (width, height, title, plotsconfig=[['title', 'xlabel',
+             'ylabel', 1, 0, 111, ['line1']]], linewidth=2,
+             legend_fontsize=8)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

run_hpct_animation

+
+
 run_hpct_animation (hpct, counter=None, plotter=None, interval=1,
+                     verbose=False)
+
+
+
window = 20
+plotter = SubPlotter(12, 4, "MyData", [["Data0", "time", "y", 2, window, 121, ['line1','line2']], 
+                                       ["Data1", "time", "y", 2, window, 122, ['line1','line2']]])
+
+for x in  range(10):
+    y11 = random()-0.5
+    y12 = random()-0.5
+    plotter.add_data(0, x, [y11, y12])
+    y21 = random()-0.5
+    y22 = random()-0.5                
+    plotter.add_data(1, x, [y21, y22])
+                    
+plotter.draw()
+
+
+
+

+
+
+
+
+
+
window = 20
+plotter = SubPlotter(12, 8, "MyData", [["Data0", "time", "y", 2, window, 211, ['line1','line2']], 
+                                       ["Data1", "time", "y", 2, window, 212, ['line1','line2']]])
+
+for x in  range(10):
+    y11 = random()-0.5
+    y12 = random()-0.5
+    plotter.add_data(0, x, [y11, y12])
+    y21 = random()-0.5
+    y22 = random()-0.5                
+    plotter.add_data(1, x, [y21, y22])
+                    
+plotter.draw()
+
+
+
+

+
+
+
+
+
+
window = 20
+plotter = SubPlotter(12, 8, "MyData", [["Data0", "time", "y", 2, window, 221, ['line1','line2']], 
+                                       ["Data1", "time", "y", 2, window, 222, ['line1','line2']],
+                                       ["Data2", "time", "y", 2, window, 212, ['line1','line2']]])
+
+for x in  range(10):
+    y11 = random()-0.5
+    y12 = random()-0.5
+    plotter.add_data(0, x, [y11, y12])
+    y21 = random()-0.5
+    y22 = random()-0.5                
+    plotter.add_data(1, x, [y21, y22])
+    y21 = random()-0.5
+    y22 = random()-0.5                
+    plotter.add_data(2, x, [y21, y22])
+                    
+plotter.draw()
+
+
+
+

+
+
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/putils.html b/putils.html new file mode 100644 index 00000000..a1823b59 --- /dev/null +++ b/putils.html @@ -0,0 +1,1251 @@ + + + + + + + + + +Utilities – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Utilities

+
+ + + +
+ + + + +
+ + + +
+ + + +
+

SingletonObjects

+
+

source

+
+

SingletonObjects

+
+
 SingletonObjects ()
+
+

A utility for refrencing objects that should only be declared once.

+
+
+
+

UniqueNamer

+
+

source

+
+

UniqueNamer

+
+
 UniqueNamer ()
+
+

A utility for ensuring the names of functions are unique.

+
+
+
+

FunctionsList

+
+

source

+
+

FunctionsList

+
+
 FunctionsList ()
+
+

A utility for storing functions created, keyed on the function name.

+
+
+
+

Memory

+
+

source

+
+

Memory

+
+
 Memory ()
+
+

A utility for recording global values.

+
+
+
+

NumberStats

+
+

source

+
+

NumberStats

+
+
 NumberStats ()
+
+

A utility for calculating the statistice of a number.

+
+
for num in range(10):
+    NumberStats.getInstance().add(num)
+    NumberStats.getInstance().add(-num)
+
+NumberStats.getInstance().report()
+
+
--- stats report
+Max: 9.000
+Min: -9.000
+
+
+
+
from pct.functions import Proportional
+
+
+
prop = Proportional()
+
+
+
UniqueNamer.getInstance().report()
+
+
+
FunctionsList.getInstance().report()
+
+
--- functions report
+
+
+
+

source

+
+
+

dynamic_module_import

+
+
 dynamic_module_import (modulename, package=None)
+
+
+

source

+
+
+

dynamic_class_load

+
+
 dynamic_class_load (modulename, classname)
+
+
+
#import importlib
+#importlib.import_module('pct.functions', 'Constant')
+
+
+

source

+
+
+

get_drive

+
+
 get_drive ()
+
+
+

source

+
+
+

loadjson

+
+
 loadjson (file)
+
+
+
var = loadjson("ws.json")
+print(var)
+
+
{'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 35, 'links': {'0': 'constant', '1': 'constant1', '2': 'constant2'}, 'weights': [1, 1, 1]}
+
+
+
+
+
+

Counter

+
+

source

+
+

Counter

+
+
 Counter (limit=1000, init=0, step=1, print=100, pause=False, display=10)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

stringIntListToListOfInts

+
+
 stringIntListToListOfInts (strList, delimiter)
+
+
+

source

+
+
+

stringFloatListToListOfFloats

+
+
 stringFloatListToListOfFloats (strList, delimiter)
+
+
+

source

+
+
+

stringListToListOfStrings

+
+
 stringListToListOfStrings (strList, delimiter=',')
+
+
+

source

+
+
+

listNumsToString

+
+
 listNumsToString (list)
+
+
+

source

+
+
+

round_lists

+
+
 round_lists (alist, formatted, places)
+
+
+

source

+
+
+

floatListsToString

+
+
 floatListsToString (alist, places)
+
+
+

source

+
+
+

limit_large_float

+
+
 limit_large_float (val, limit=10000000)
+
+
+

source

+
+
+

sigmoid

+
+
 sigmoid (x, range, slope)
+
+
+

source

+
+
+

smooth

+
+
 smooth (new_val, old_val, smooth_factor)
+
+
+

source

+
+
+

sigmoid_array

+
+
 sigmoid_array (x, range, slope)
+
+
+

source

+
+
+

dot

+
+
 dot (inputs, weights)
+
+
+

source

+
+
+

list_of_ones

+
+
 list_of_ones (num)
+
+
+

source

+
+
+

limit_to_range

+
+
 limit_to_range (num, lower, upper)
+
+
+
print(list_of_ones(3))
+
+
[1, 1, 1]
+
+
+
+

source

+
+
+

wrap_env

+
+
 wrap_env (env)
+
+
+

source

+
+
+

show_video

+
+
 show_video ()
+
+
+
import matplotlib.pyplot as plt
+
+
+
x = 2 #np.linspace(-5, 5, 11)
+#x = -10000001
+range=2
+scale=2
+y = sigmoid(x, range, scale)
+print(y)
+# plt.plot(x, y)
+# plt.grid()
+# plt.xlim(-6, 6)
+# plt.xlabel('x')
+# plt.title('expit(x)')
+# plt.show()
+
+
0.7615941559557646
+
+
+
+

source

+
+
+

is_in_notebooks

+
+
 is_in_notebooks ()
+
+
+

source

+
+
+

printtime

+
+
 printtime (msg)
+
+
+

source

+
+
+

clip_value

+
+
 clip_value (val, range)
+
+
+
+
+

get_abs_tol

+
+

source

+
+

get_abs_tol

+
+
 get_abs_tol (key)
+
+
+
+
+

get_rel_tol

+
+

source

+
+

get_rel_tol

+
+
 get_rel_tol (key)
+
+
+

source

+
+
+

map_to_int_even_range

+
+
 map_to_int_even_range (val=None, inrange=None, outrange=None)
+
+
+

source

+
+
+

map_to_int_odd_range

+
+
 map_to_int_odd_range (val=None, inrange=None, outrange=None)
+
+
+
limits = [-2, 2]
+mapped = [1, 5]
+vals = [-3.1, -2.1, -1.51, -1.5, -1.4, -0.9,-0.5, -0.1,  0, 0.1, 0.6, 1.1, 2.1, 210.1 ]
+for val in vals:
+    print(val, map_to_int_odd_range(val, limits, mapped))
+
+
-3.1 1
+-2.1 1
+-1.51 1
+-1.5 1
+-1.4 2
+-0.9 2
+-0.5 3
+-0.1 3
+0 3
+0.1 3
+0.6 4
+1.1 4
+2.1 5
+210.1 5
+
+
+
+
#vals = [0.6]
+
+vals = [-3.1, -2.1, -1.51, -1.5, -1.4, -0.9, -0.5, -0.1, 0, 0.1, 0.6, 1.1, 2.1, 210.1 ]
+limits = [-2, 2]
+mapped = [1, 4]
+for val in vals:
+    print(val, map_to_int_even_range(val, limits, mapped))
+
+
-3.1 1
+-2.1 1
+-1.51 1
+-1.5 1
+-1.4 1
+-0.9 2
+-0.5 2
+-0.1 2
+0 3
+0.1 3
+0.6 3
+1.1 4
+2.1 4
+210.1 4
+
+
+
+

source

+
+
+

Timer

+
+
 Timer ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

TimerError

+

A custom exception used to report errors in use of Timer class

+
+
timer = Timer()
+timer.start()
+time.sleep(1)
+timer.stop()
+timer.start()
+time.sleep(1)
+timer.stop()
+
+print(timer.mean())
+print(timer.total())
+print(timer.count())
+
+
1.0082400500014046
+2.016480100002809
+2
+
+
+
+
+
+

PCTRunProperties

+
+

source

+
+

PCTRunProperties

+
+
 PCTRunProperties ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
property_file = 'ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties'
+property_dir = ''
+print(property_dir, property_file)
+ep = PCTRunProperties.get_environment_properties(root='testfiles', env='ARC', property_dir=property_dir, property_file=property_file)
+print(ep)
+
+
 ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties
+({'code': '007bbfb7', 'index': 0, 'dataset': 'train', 'control_set': ['dims'], 'input_set': ['env'], 'history': 5, 'initial': 100}, 'ARC')
+
+
+
+

source

+
+
+

get_ram_mb

+
+
 get_ram_mb ()
+
+ + +
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..2f5900c5 --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +Sitemap: https://perceptualrobots.github.io/pct/sitemap.xml diff --git a/search.json b/search.json new file mode 100644 index 00000000..a09704d0 --- /dev/null +++ b/search.json @@ -0,0 +1,732 @@ +[ + { + "objectID": "helpers.html", + "href": "helpers.html", + "title": "Helper classes", + "section": "", + "text": "source\n\n\n\n ListChecker ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n# Example usage:\nfloat_list = [1.00000001, 1.00000002, 1.00000003]\nint_list = [1, 1, 1]\n\nprint(ListChecker.check_list_unchanged(float_list)) # Should print: True (depending on the tolerance)\nprint(ListChecker.check_integer_list_unchanged(int_list)) # Should print: True\n\n(False, {'gradient': 1.0000000050247593e-08, 'mean': 1.0000000199999999, 'std_dev': 8.164965850304249e-09})\nTrue", + "crumbs": [ + "Helper classes" + ] + }, + { + "objectID": "helpers.html#listchecker", + "href": "helpers.html#listchecker", + "title": "Helper classes", + "section": "", + "text": "source\n\n\n\n ListChecker ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n@staticmethod\ndef check_float_list_close_to_zero(float_list, rel_tol=1e-9, abs_tol=0.0, gradient_abs_tol=0.0):\n \"\"\"\n Checks if the values in the float list are close to zero within the specified tolerance\n and if the gradient (difference between consecutive values) is close to zero within the specified gradient tolerance.\n\n Returns:\n bool: True if all values are close to zero within the specified tolerance and the gradient of all consecutive values is close to zero within the specified gradient tolerance.\n \"\"\"\n if not float_list:\n return True\n \n values_close_to_zero = all(\n math.isclose(value, 0, rel_tol=rel_tol, abs_tol=abs_tol)\n for value in float_list\n )\n \n if len(float_list) == 1:\n return values_close_to_zero\n \n gradients_close_to_zero = all(\n math.isclose(float_list[i] - float_list[i - 1], 0, rel_tol=0, abs_tol=gradient_abs_tol)\n for i in range(1, len(float_list))\n )\n \n return values_close_to_zero and gradients_close_to_zero\n\n\n# Example usage:\nfloat_list = [1.00000001, 1.00000002, 1.00000003]\nint_list = [1, 1, 1]\n\nprint(ListChecker.check_list_unchanged(float_list)) # Should print: True (depending on the tolerance)\nprint(ListChecker.check_integer_list_unchanged(int_list)) # Should print: True\n\n(False, {'gradient': 1.0000000050247593e-08, 'mean': 1.0000000199999999, 'std_dev': 8.164965850304249e-09})\nTrue", + "crumbs": [ + "Helper classes" + ] + }, + { + "objectID": "helpers.html#jsondatamanager", + "href": "helpers.html#jsondatamanager", + "title": "Helper classes", + "section": "JSONDataManager", + "text": "JSONDataManager\n\nsource\n\nJSONDataManager\n\n JSONDataManager (path:str, show_timing:bool=False)\n\nInitialize self. See help(type(self)) for accurate signature.", + "crumbs": [ + "Helper classes" + ] + }, + { + "objectID": "helpers.html#challengesdatamanager", + "href": "helpers.html#challengesdatamanager", + "title": "Helper classes", + "section": "ChallengesDataManager", + "text": "ChallengesDataManager\n\nsource\n\nChallengesDataManager\n\n ChallengesDataManager (path:str, show_timing:bool=False)\n\nInitialize self. See help(type(self)) for accurate signature.", + "crumbs": [ + "Helper classes" + ] + }, + { + "objectID": "helpers.html#solutionsdatamanager", + "href": "helpers.html#solutionsdatamanager", + "title": "Helper classes", + "section": "SolutionsDataManager", + "text": "SolutionsDataManager\n\nsource\n\nSolutionsDataManager\n\n SolutionsDataManager (path:str, show_timing:bool=False)\n\nInitialize self. See help(type(self)) for accurate signature.\n\n# Example usage\nstart_time = time.time()\nchallenges_manager = ChallengesDataManager(\"C:\\\\packages\\\\arc-prize-2024\\\\arc-agi_training_challenges.json\")\nend_time = time.time()\nprint(f\"Execution time of challenges load: {end_time - start_time:.4f} seconds\")\n\nstart_time = time.time()\nsolutions_manager = SolutionsDataManager(\"C:\\\\packages\\\\arc-prize-2024\\\\arc-agi_training_solutions.json\")\nend_time = time.time()\nprint(f\"Execution time of solutions load: {end_time - start_time:.4f} seconds\")\n\nprint(challenges_manager.get_all_keys())\nprint(challenges_manager.count_all_keys())\nprint(challenges_manager.get_keys_with_equal_size_input_output())\ngkweqsio = challenges_manager.get_keys_with_equal_size_input_output()\nprint(gkweqsio[0])\nprint(gkweqsio[1])\ngkwiios = challenges_manager.get_keys_with_inconsistent_input_output_sizes()\nprint(gkwiios[0])\nprint(gkwiios[1])\ngkwvts = challenges_manager.get_keys_with_variable_input_sizes()\nprint(gkwvts[0])\nprint(gkwvts[1])\nhist = challenges_manager.get_input_array_histogram()\nprint(hist)\ncount = 0\nfor key, value in hist.items():\n count += value\nprint(count)\nprint('get_data_for_key',challenges_manager.get_data_for_key('007bbfb7'))\nprint(challenges_manager.get_arrays_for_key('007bbfb7', 'train'))\nprint(challenges_manager.get_arrays_for_key('007bbfb7', 'test'))\n\nprint('get_largest_array_size', challenges_manager.get_largest_array_size())\nprint('analyze_arrays', challenges_manager.analyze_arrays())\n\n\nprint('get_all_keys', solutions_manager.get_all_keys())\nprint(solutions_manager.count_all_keys())\nget_data_for_key = solutions_manager.get_data_for_key('007bbfb7')\nprint('get_data_for_key', get_data_for_key)\nprint(solutions_manager.get_arrays_for_key('007bbfb7', 'output'))\n\nExecution time of challenges load: 0.0301 seconds\nExecution time of solutions load: 0.0053 seconds\n['007bbfb7', '00d62c1b', '017c7c7b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0b148d64', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '10fcaaa3', '11852cab', '1190e5a7', '137eaa0f', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f85a75f', '1f876c06', '1fad071e', '2013d3e2', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '239be575', '23b5c85d', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '27a28665', '28bf18c6', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3428a4f5', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39a8645d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3af2c5a8', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3de23699', '3e980e27', '3eda0437', '3f7978a0', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '4290ef0e', '42a50994', '4347f46a', '444801d8', '445eab21', '447fd412', '44d8ac46', '44f52bb0', '4522001f', '4612dd53', '46442a0e', '469497ad', '46f33fce', '47c1f68c', '484b58aa', '48d8fb45', '4938f0c2', '496994bd', '49d1d64f', '4be741c5', '4c4377d9', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5117e062', '5168d44c', '539a4f51', '53b68214', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '5614dbcf', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5bd6f4ac', '5c0a986e', '5c2c9af4', '5daaa586', '60b61512', '6150a2bd', '623ea044', '62c24649', '63613498', '6430c8c4', '6455b5f5', '662c240a', '67385a82', '673ef223', '6773b310', '67a3c6ac', '67a423a3', '67e8384a', '681b3aeb', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6b9890af', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6ecd11f4', '6f8cd79b', '6fa7a44f', '72322fa7', '72ca375d', '73251a56', '7447852a', '7468f01a', '746b3537', '74dd1130', '75b8110e', '760b3cac', '776ffc46', '77fdfe62', '780d0b14', '7837ac64', '794b24be', '7b6016b9', '7b7f7511', '7c008303', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '7fe24cdd', '80af3007', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '846bdb03', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '88a62173', '890034e9', '8a004b2b', '8be77c9e', '8d5021e8', '8d510a79', '8e1813be', '8e5a5113', '8eb1be9a', '8efcae92', '8f2ea7aa', '90c28cc7', '90f3ed37', '913fb3ed', '91413438', '91714a58', '9172f3a0', '928ad970', '93b581b8', '941d9a10', '94f9d214', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '97a05b5b', '98cf29f8', '995c5fa3', '99b1bc43', '99fa7670', '9aec4887', '9af7a82c', '9d9215db', '9dfd6313', '9ecd008a', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a3325580', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61ba2ce', 'a61f2674', 'a64e4611', 'a65b410d', 'a68b268e', 'a699fb00', 'a740d043', 'a78176bb', 'a79310a0', 'a85d4709', 'a87f7484', 'a8c38be5', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ac0a08a4', 'ae3edfdc', 'ae4f1146', 'aedd82e4', 'af902bf9', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'b91ae062', 'b94a9452', 'b9b7f026', 'ba26e723', 'ba97ae07', 'bb43febb', 'bbc9ae5d', 'bc1d5164', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'be94b721', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3e719e8', 'c3f564a4', 'c444b776', 'c59eb873', 'c8cbb738', 'c8f0f002', 'c909285e', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'cce03e0d', 'cdecee7f', 'ce22a75a', 'ce4f8723', 'ce602527', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd13f3404', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4469b4b', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd631b094', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'd9fac9be', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc0a314f', 'dc1df850', 'dc433765', 'ddf7fa4f', 'de1cd16c', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e50d258f', 'e6721834', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e98196ab', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25fbde4', 'f25ffba3', 'f2829549', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f8a8fe49', 'f8b3ba0a', 'f8c80d96', 'f8ff0b80', 'f9012d9b', 'fafffa47', 'fcb5c309', 'fcc82909', 'feca6190', 'ff28f65a', 'ff805c23']\n400\n(['00d62c1b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '11852cab', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1caeab9d', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f876c06', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3e980e27', '3eda0437', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '42a50994', '4347f46a', '444801d8', '447fd412', '44d8ac46', '4612dd53', '484b58aa', '4938f0c2', '496994bd', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5168d44c', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '56dc2b01', '56ff96f3', '57aa92db', '5c0a986e', '5c2c9af4', '60b61512', '6150a2bd', '623ea044', '63613498', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6f8cd79b', '72322fa7', '73251a56', '7447852a', '74dd1130', '760b3cac', '776ffc46', '794b24be', '7b6016b9', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '855e0971', '85c4e7cd', '868de0fa', '88a10436', '890034e9', '8d510a79', '8e5a5113', '8eb1be9a', '8f2ea7aa', '90f3ed37', '913fb3ed', '91714a58', '928ad970', '93b581b8', '941d9a10', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '98cf29f8', '99fa7670', '9d9215db', '9dfd6313', '9edfc990', 'a1570a43', 'a2fd1cf0', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61f2674', 'a64e4611', 'a65b410d', 'a699fb00', 'a78176bb', 'a79310a0', 'a85d4709', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ae3edfdc', 'aedd82e4', 'af902bf9', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'ba26e723', 'ba97ae07', 'bb43febb', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3f564a4', 'c444b776', 'c8f0f002', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'ce22a75a', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'ddf7fa4f', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25ffba3', 'f2829549', 'f35d900a', 'f76d97a5', 'f8a8fe49', 'f8c80d96', 'fcc82909'], 274)\n['00d62c1b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '11852cab', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1caeab9d', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f876c06', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3e980e27', '3eda0437', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '42a50994', '4347f46a', '444801d8', '447fd412', '44d8ac46', '4612dd53', '484b58aa', '4938f0c2', '496994bd', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5168d44c', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '56dc2b01', '56ff96f3', '57aa92db', '5c0a986e', '5c2c9af4', '60b61512', '6150a2bd', '623ea044', '63613498', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6f8cd79b', '72322fa7', '73251a56', '7447852a', '74dd1130', '760b3cac', '776ffc46', '794b24be', '7b6016b9', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '855e0971', '85c4e7cd', '868de0fa', '88a10436', '890034e9', '8d510a79', '8e5a5113', '8eb1be9a', '8f2ea7aa', '90f3ed37', '913fb3ed', '91714a58', '928ad970', '93b581b8', '941d9a10', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '98cf29f8', '99fa7670', '9d9215db', '9dfd6313', '9edfc990', 'a1570a43', 'a2fd1cf0', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61f2674', 'a64e4611', 'a65b410d', 'a699fb00', 'a78176bb', 'a79310a0', 'a85d4709', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ae3edfdc', 'aedd82e4', 'af902bf9', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'ba26e723', 'ba97ae07', 'bb43febb', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3f564a4', 'c444b776', 'c8f0f002', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'ce22a75a', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'ddf7fa4f', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25ffba3', 'f2829549', 'f35d900a', 'f76d97a5', 'f8a8fe49', 'f8c80d96', 'fcc82909']\n274\n['007bbfb7', '017c7c7b', '3af2c5a8', '4522001f', '46f33fce', '4c4377d9', '539a4f51', '62c24649', '67e8384a', '6fa7a44f', '7fe24cdd', '8be77c9e', '8d5021e8', '9172f3a0', 'c3e719e8', 'cce03e0d', 'd13f3404']\n17\n['00d62c1b', '025d127b', '05f2a901', '06df4c85', '0a938d79', '0b148d64', '0e206a2e', '10fcaaa3', '1190e5a7', '150deff5', '178fcbfb', '1a07d186', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '239be575', '23b5c85d', '253bf280', '25d487eb', '272f95fa', '28e73c20', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '36fdfd69', '39e1d7f9', '3bd67248', '3de23699', '3eda0437', '3f7978a0', '40853293', '4290ef0e', '42a50994', '4347f46a', '4612dd53', '46442a0e', '47c1f68c', '4938f0c2', '49d1d64f', '4be741c5', '4c5c2cf0', '50846271', '50cb2852', '5168d44c', '53b68214', '54d82841', '54d9e175', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5daaa586', '623ea044', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '68b16354', '6aa20dc0', '6b9890af', '6cdd2623', '6d75e8bb', '6ecd11f4', '6f8cd79b', '72322fa7', '7468f01a', '746b3537', '77fdfe62', '780d0b14', '7837ac64', '7b6016b9', '7b7f7511', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '8a004b2b', '8e1813be', '8eb1be9a', '913fb3ed', '928ad970', '95990924', '97999447', '97a05b5b', '98cf29f8', '99fa7670', '9aec4887', '9af7a82c', '9dfd6313', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a416b8f3', 'a5313dff', 'a5f85a15', 'a65b410d', 'a699fb00', 'a740d043', 'a79310a0', 'a87f7484', 'a8c38be5', 'aba27056', 'aedd82e4', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b2862040', 'b527c5c6', 'b548a754', 'b7249182', 'b775ac94', 'b782dc8a', 'b8cdaf2b', 'b9b7f026', 'ba97ae07', 'bd4472b8', 'bda2d7a6', 'be94b721', 'beb8660c', 'c1d99e64', 'c59eb873', 'c8cbb738', 'c909285e', 'caa06a1f', 'ce602527', 'ce9e57f2', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd22278a0', 'd23f8c26', 'd4a91cb9', 'd511f180', 'd5d6de2d', 'd687bc17', 'd90796e8', 'd9fac9be', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'de1cd16c', 'e21d9049', 'e26a3af2', 'e509e548', 'e6721834', 'e73095fd', 'e8dc4411', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'f15e1fac', 'f1cefba8', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f9012d9b', 'fcb5c309', 'ff28f65a']\n173\n{5: 18, 3: 236, 2: 57, 4: 78, 6: 5, 8: 2, 7: 3, 10: 1}\n400\nget_data_for_key {'test': [{'input': [[7, 0, 7], [7, 0, 7], [7, 7, 0]]}], 'train': [{'input': [[0, 7, 7], [7, 7, 7], [0, 7, 7]], 'output': [[0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [7, 7, 7, 7, 7, 7, 7, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7]]}, {'input': [[4, 0, 4], [0, 0, 0], [0, 4, 0]], 'output': [[4, 0, 4, 0, 0, 0, 4, 0, 4], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 0, 0, 0, 0, 0, 4, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 0, 4, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 4, 0, 0, 0, 0]]}, {'input': [[0, 0, 0], [0, 0, 2], [2, 0, 2]], 'output': [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 2], [0, 0, 0, 0, 0, 0, 2, 0, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0, 0, 2], [2, 0, 2, 0, 0, 0, 2, 0, 2]]}, {'input': [[6, 6, 0], [6, 0, 0], [0, 6, 6]], 'output': [[6, 6, 0, 6, 6, 0, 0, 0, 0], [6, 0, 0, 6, 0, 0, 0, 0, 0], [0, 6, 6, 0, 6, 6, 0, 0, 0], [6, 6, 0, 0, 0, 0, 0, 0, 0], [6, 0, 0, 0, 0, 0, 0, 0, 0], [0, 6, 6, 0, 0, 0, 0, 0, 0], [0, 0, 0, 6, 6, 0, 6, 6, 0], [0, 0, 0, 6, 0, 0, 6, 0, 0], [0, 0, 0, 0, 6, 6, 0, 6, 6]]}, {'input': [[2, 2, 2], [0, 0, 0], [0, 2, 2]], 'output': [[2, 2, 2, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 2, 0, 2, 2, 0, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 2, 0, 2, 2]]}]}\n[]\n[]\nget_largest_array_size ('1f85a75f', 900)\nanalyze_arrays {'analysis': {'equal_input_output': ['045e512c', '05269061', '08ed6ac7', '09629e4f', '0962bcdd', '0ca9ddb6', '0d3d703e', '0dfd9992', '11852cab', '1b60fb0c', '1bfc4729', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f876c06', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '23581191', '25d8a9c8', '25ff71a9', '264363fd', '29623171', '29c11459', '29ec7d0e', '2bcee788', '31aa019c', '321b1fc6', '32597951', '3345333e', '3618c87e', '3631a71a', '363442ee', '36d67576', '3906de3d', '3aa6fb7a', '3befdf3e', '3c9b0459', '3e980e27', '4093f84a', '41e4d17e', '4258a5f9', '444801d8', '447fd412', '44d8ac46', '484b58aa', '508bd3b6', '543a7ed5', '5521c0d9', '5582e5ca', '5c0a986e', '5c2c9af4', '60b61512', '6150a2bd', '63613498', '6855a6e4', '694f12f3', '6a1e5592', '6c434453', '6cf79266', '6d0160f0', '6d58a25d', '6e02f1e3', '6e19193c', '6e82a1ae', '73251a56', '74dd1130', '760b3cac', '776ffc46', '794b24be', '7ddcd7ec', '7df24a62', '8403a5d5', '890034e9', '8d510a79', '8e5a5113', '8f2ea7aa', '90f3ed37', '91714a58', '93b581b8', '941d9a10', '952a094c', '9565186b', '9d9215db', 'a48eeaf7', 'a61f2674', 'a64e4611', 'a78176bb', 'a85d4709', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'ae3edfdc', 'af902bf9', 'b230c067', 'b60334d2', 'b6afb2da', 'b8825c91', 'bb43febb', 'bdad9b1f', 'c0f76784', 'c3f564a4', 'c9f8e694', 'cbded52d', 'ce22a75a', 'd037b0a7', 'd06dbe63', 'd2abd087', 'd364b489', 'd43fd935', 'd4f3cd78', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd9f24cd1', 'ddf7fa4f', 'ded97339', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e76a88a6', 'e8593010', 'e9614598', 'e9afcf9a', 'ea32f347', 'ed36ccf7', 'ef135b50', 'f25ffba3', 'f8a8fe49', 'f8c80d96', 'fcc82909'], 'consistent_but_different_sizes': ['007bbfb7', '017c7c7b', '0520fde7', '137eaa0f', '1b2d62fb', '1fad071e', '2013d3e2', '27a28665', '28bf18c6', '3428a4f5', '39a8645d', '3af2c5a8', '445eab21', '44f52bb0', '4522001f', '46f33fce', '48d8fb45', '4c4377d9', '5117e062', '539a4f51', '5614dbcf', '5bd6f4ac', '62c24649', '6430c8c4', '662c240a', '6773b310', '67e8384a', '681b3aeb', '6d0aefbc', '6fa7a44f', '75b8110e', '7c008303', '7fe24cdd', '80af3007', '88a62173', '8be77c9e', '8d5021e8', '9172f3a0', '94f9d214', '995c5fa3', '99b1bc43', '9ecd008a', 'a61ba2ce', 'a68b268e', 'ae4f1146', 'bc1d5164', 'c3e719e8', 'c9e6f938', 'cce03e0d', 'cdecee7f', 'ce4f8723', 'cf98881b', 'd13f3404', 'd4469b4b', 'dae9d2b5', 'dc0a314f', 'e3497940', 'e98196ab', 'f2829549', 'f8ff0b80', 'fafffa47', 'ff805c23'], 'variable_output_sizes': ['00d62c1b', '025d127b', '05f2a901', '06df4c85', '0a938d79', '0b148d64', '0e206a2e', '10fcaaa3', '1190e5a7', '150deff5', '178fcbfb', '1a07d186', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '1f85a75f', '234bbc79', '239be575', '23b5c85d', '253bf280', '25d487eb', '272f95fa', '28e73c20', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '36fdfd69', '39e1d7f9', '3ac3eb23', '3bd67248', '3bdb4ada', '3de23699', '3eda0437', '3f7978a0', '40853293', '4290ef0e', '42a50994', '4347f46a', '4612dd53', '46442a0e', '469497ad', '47c1f68c', '4938f0c2', '496994bd', '49d1d64f', '4be741c5', '4c5c2cf0', '50846271', '50cb2852', '5168d44c', '53b68214', '54d82841', '54d9e175', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5daaa586', '623ea044', '6455b5f5', '67385a82', '673ef223', '67a3c6ac', '67a423a3', '68b16354', '6aa20dc0', '6b9890af', '6cdd2623', '6d75e8bb', '6ecd11f4', '6f8cd79b', '72322fa7', '72ca375d', '7447852a', '7468f01a', '746b3537', '77fdfe62', '780d0b14', '7837ac64', '7b6016b9', '7b7f7511', '7e0986d6', '7f4411dc', '810b9b61', '82819916', '83302e8f', '834ec97d', '846bdb03', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '8a004b2b', '8e1813be', '8eb1be9a', '8efcae92', '90c28cc7', '913fb3ed', '91413438', '928ad970', '95990924', '963e52fc', '97999447', '97a05b5b', '98cf29f8', '99fa7670', '9aec4887', '9af7a82c', '9dfd6313', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a3325580', 'a3df8b1e', 'a416b8f3', 'a5313dff', 'a5f85a15', 'a65b410d', 'a699fb00', 'a740d043', 'a79310a0', 'a87f7484', 'a8c38be5', 'aba27056', 'ac0a08a4', 'aedd82e4', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b7249182', 'b775ac94', 'b782dc8a', 'b8cdaf2b', 'b91ae062', 'b94a9452', 'b9b7f026', 'ba26e723', 'ba97ae07', 'bbc9ae5d', 'bd4472b8', 'bda2d7a6', 'be94b721', 'beb8660c', 'c1d99e64', 'c444b776', 'c59eb873', 'c8cbb738', 'c8f0f002', 'c909285e', 'caa06a1f', 'ce602527', 'ce9e57f2', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd22278a0', 'd23f8c26', 'd406998b', 'd4a91cb9', 'd511f180', 'd5d6de2d', 'd631b094', 'd687bc17', 'd90796e8', 'd9fac9be', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc1df850', 'dc433765', 'de1cd16c', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e509e548', 'e50d258f', 'e6721834', 'e73095fd', 'e8dc4411', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'f15e1fac', 'f1cefba8', 'f25fbde4', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f8b3ba0a', 'f9012d9b', 'fcb5c309', 'feca6190', 'ff28f65a']}, 'counts': {'equal_input_output': 134, 'consistent_but_different_sizes': 62, 'variable_output_sizes': 204}}\nget_all_keys ['007bbfb7', '00d62c1b', '017c7c7b', '025d127b', '045e512c', '0520fde7', '05269061', '05f2a901', '06df4c85', '08ed6ac7', '09629e4f', '0962bcdd', '0a938d79', '0b148d64', '0ca9ddb6', '0d3d703e', '0dfd9992', '0e206a2e', '10fcaaa3', '11852cab', '1190e5a7', '137eaa0f', '150deff5', '178fcbfb', '1a07d186', '1b2d62fb', '1b60fb0c', '1bfc4729', '1c786137', '1caeab9d', '1cf80156', '1e0a9b12', '1e32b0e9', '1f0c79e5', '1f642eb9', '1f85a75f', '1f876c06', '1fad071e', '2013d3e2', '2204b7a8', '22168020', '22233c11', '2281f1f4', '228f6490', '22eb0ac0', '234bbc79', '23581191', '239be575', '23b5c85d', '253bf280', '25d487eb', '25d8a9c8', '25ff71a9', '264363fd', '272f95fa', '27a28665', '28bf18c6', '28e73c20', '29623171', '29c11459', '29ec7d0e', '2bcee788', '2bee17df', '2c608aff', '2dc579da', '2dd70a9a', '2dee498d', '31aa019c', '321b1fc6', '32597951', '3345333e', '3428a4f5', '3618c87e', '3631a71a', '363442ee', '36d67576', '36fdfd69', '3906de3d', '39a8645d', '39e1d7f9', '3aa6fb7a', '3ac3eb23', '3af2c5a8', '3bd67248', '3bdb4ada', '3befdf3e', '3c9b0459', '3de23699', '3e980e27', '3eda0437', '3f7978a0', '40853293', '4093f84a', '41e4d17e', '4258a5f9', '4290ef0e', '42a50994', '4347f46a', '444801d8', '445eab21', '447fd412', '44d8ac46', '44f52bb0', '4522001f', '4612dd53', '46442a0e', '469497ad', '46f33fce', '47c1f68c', '484b58aa', '48d8fb45', '4938f0c2', '496994bd', '49d1d64f', '4be741c5', '4c4377d9', '4c5c2cf0', '50846271', '508bd3b6', '50cb2852', '5117e062', '5168d44c', '539a4f51', '53b68214', '543a7ed5', '54d82841', '54d9e175', '5521c0d9', '5582e5ca', '5614dbcf', '56dc2b01', '56ff96f3', '57aa92db', '5ad4f10b', '5bd6f4ac', '5c0a986e', '5c2c9af4', '5daaa586', '60b61512', '6150a2bd', '623ea044', '62c24649', '63613498', '6430c8c4', '6455b5f5', '662c240a', '67385a82', '673ef223', '6773b310', '67a3c6ac', '67a423a3', '67e8384a', '681b3aeb', '6855a6e4', '68b16354', '694f12f3', '6a1e5592', '6aa20dc0', '6b9890af', '6c434453', '6cdd2623', '6cf79266', '6d0160f0', '6d0aefbc', '6d58a25d', '6d75e8bb', '6e02f1e3', '6e19193c', '6e82a1ae', '6ecd11f4', '6f8cd79b', '6fa7a44f', '72322fa7', '72ca375d', '73251a56', '7447852a', '7468f01a', '746b3537', '74dd1130', '75b8110e', '760b3cac', '776ffc46', '77fdfe62', '780d0b14', '7837ac64', '794b24be', '7b6016b9', '7b7f7511', '7c008303', '7ddcd7ec', '7df24a62', '7e0986d6', '7f4411dc', '7fe24cdd', '80af3007', '810b9b61', '82819916', '83302e8f', '834ec97d', '8403a5d5', '846bdb03', '855e0971', '85c4e7cd', '868de0fa', '8731374e', '88a10436', '88a62173', '890034e9', '8a004b2b', '8be77c9e', '8d5021e8', '8d510a79', '8e1813be', '8e5a5113', '8eb1be9a', '8efcae92', '8f2ea7aa', '90c28cc7', '90f3ed37', '913fb3ed', '91413438', '91714a58', '9172f3a0', '928ad970', '93b581b8', '941d9a10', '94f9d214', '952a094c', '9565186b', '95990924', '963e52fc', '97999447', '97a05b5b', '98cf29f8', '995c5fa3', '99b1bc43', '99fa7670', '9aec4887', '9af7a82c', '9d9215db', '9dfd6313', '9ecd008a', '9edfc990', '9f236235', 'a1570a43', 'a2fd1cf0', 'a3325580', 'a3df8b1e', 'a416b8f3', 'a48eeaf7', 'a5313dff', 'a5f85a15', 'a61ba2ce', 'a61f2674', 'a64e4611', 'a65b410d', 'a68b268e', 'a699fb00', 'a740d043', 'a78176bb', 'a79310a0', 'a85d4709', 'a87f7484', 'a8c38be5', 'a8d7556c', 'a9f96cdd', 'aabf363d', 'aba27056', 'ac0a08a4', 'ae3edfdc', 'ae4f1146', 'aedd82e4', 'af902bf9', 'b0c4d837', 'b190f7f5', 'b1948b0a', 'b230c067', 'b27ca6d3', 'b2862040', 'b527c5c6', 'b548a754', 'b60334d2', 'b6afb2da', 'b7249182', 'b775ac94', 'b782dc8a', 'b8825c91', 'b8cdaf2b', 'b91ae062', 'b94a9452', 'b9b7f026', 'ba26e723', 'ba97ae07', 'bb43febb', 'bbc9ae5d', 'bc1d5164', 'bd4472b8', 'bda2d7a6', 'bdad9b1f', 'be94b721', 'beb8660c', 'c0f76784', 'c1d99e64', 'c3e719e8', 'c3f564a4', 'c444b776', 'c59eb873', 'c8cbb738', 'c8f0f002', 'c909285e', 'c9e6f938', 'c9f8e694', 'caa06a1f', 'cbded52d', 'cce03e0d', 'cdecee7f', 'ce22a75a', 'ce4f8723', 'ce602527', 'ce9e57f2', 'cf98881b', 'd037b0a7', 'd06dbe63', 'd07ae81c', 'd0f5fe59', 'd10ecb37', 'd13f3404', 'd22278a0', 'd23f8c26', 'd2abd087', 'd364b489', 'd406998b', 'd43fd935', 'd4469b4b', 'd4a91cb9', 'd4f3cd78', 'd511f180', 'd5d6de2d', 'd631b094', 'd687bc17', 'd6ad076f', 'd89b689b', 'd8c310e9', 'd90796e8', 'd9f24cd1', 'd9fac9be', 'dae9d2b5', 'db3e9e38', 'db93a21d', 'dbc1a6ce', 'dc0a314f', 'dc1df850', 'dc433765', 'ddf7fa4f', 'de1cd16c', 'ded97339', 'e179c5f4', 'e21d9049', 'e26a3af2', 'e3497940', 'e40b9e2f', 'e48d4e1a', 'e5062a87', 'e509e548', 'e50d258f', 'e6721834', 'e73095fd', 'e76a88a6', 'e8593010', 'e8dc4411', 'e9614598', 'e98196ab', 'e9afcf9a', 'ea32f347', 'ea786f4a', 'eb281b96', 'eb5a1d5d', 'ec883f72', 'ecdecbb3', 'ed36ccf7', 'ef135b50', 'f15e1fac', 'f1cefba8', 'f25fbde4', 'f25ffba3', 'f2829549', 'f35d900a', 'f5b8619d', 'f76d97a5', 'f8a8fe49', 'f8b3ba0a', 'f8c80d96', 'f8ff0b80', 'f9012d9b', 'fafffa47', 'fcb5c309', 'fcc82909', 'feca6190', 'ff28f65a', 'ff805c23']\n400\nget_data_for_key [[7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 7, 0, 0, 0, 0, 7, 7, 0], [7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 0, 7, 0, 0, 0, 7, 0, 7], [7, 7, 0, 0, 0, 0, 7, 7, 0], [7, 0, 7, 7, 0, 7, 0, 0, 0], [7, 0, 7, 7, 0, 7, 0, 0, 0], [7, 7, 0, 7, 7, 0, 0, 0, 0]]\n[]", + "crumbs": [ + "Helper classes" + ] + }, + { + "objectID": "architectures.html", + "href": "architectures.html", + "title": "Architectures", + "section": "", + "text": "#sys.path.append(\"..\")\n\n\nsource\n\nBaseArchitecture\n\n BaseArchitecture (name=None, config=None, env=None, inputs=None,\n history=None, error_collector=None, namespace=None)\n\nBase class of an array architecture. This class is not used direclty by developers, but defines the functionality common to all.\n\nsource\n\n\nProportionalArchitecture\n\n ProportionalArchitecture (name='proportional', config=None, env=None,\n input_indexes=None, history=False,\n error_collector=None, namespace=None, **cargs)\n\nProportional Architecture\n\nsource\n\n\nDynamicArchitecture\n\n DynamicArchitecture (*args, **kwargs)\n\nDynamic Architecture\n\nsource\n\n\nrun_from_properties_file\n\n run_from_properties_file (root_dir='.', path='.', file=None, nevals=None,\n runs=500, history=True, verbose=False,\n test=False, move=None, draw=False,\n plots_figsize=(15, 4), render=True,\n layout=None, early_termination=False,\n plots=None, seed=None, print_properties=False,\n figsize=(12, 12), summary=False,\n hpct_verbose=False, error_collector_type=None,\n error_response_type=None, draw_file=None,\n funcdata=False, interactive_mode=False)\n\n\nsource\n\n\nload_properties\n\n load_properties (root_dir=None, file_path=None, file_name=None,\n nevals=None, seed=None, print_properties=False,\n gens=None, pop_size=None, evolve=False)\n\n\nsource\n\n\nsetup_environment\n\n setup_environment (properties, render=False, seed=None,\n early_termination=None, error_collector_type=None,\n error_response_type=None)\n\n\nsource\n\n\ncreate_hierarchy\n\n create_hierarchy (env, error_collector, properties, history=False,\n suffixes=False)\n\n\nfrom pct.environments import VelocityModel\nfrom pct.structure import ArchitectureStructure\nfrom pct.functions import IndexedParameter\nfrom pct.hierarchy import PCTHierarchy\nfrom pct.structure import LevelKey\nfrom pct.nodes import PCTNode\n\n\nenv = VelocityModel(name='VModel')\nnamespace=env.namespace\ninputs=[2]\nstructure = ArchitectureStructure()\nconfig = {'parameters': {}, 'level0': [[[1.0864011617580416, -1.0342161642584196], [-8.899524671308557, -8.976856229389936]], [-0.7295091920311653, -4.460573287694404], [0, 0], [[-4.146713118740296, 1.2794655139677662]]]}\nwith warnings.catch_warnings():\n warnings.simplefilter(\"ignore\")\n pa = DynamicArchitecture(structure=structure, config=config, env=env, input_indexes=inputs, namespace=namespace) #, error_collector=te)\n pa()\n#hpct = pa.get_hierarchy()\n#hpct.summary()\n#move={'VModel': [-0.2, -0.3],'Input0': [-0.3, 0],'OL0C0ws': [-0.4, 0],'OL0C1ws': [0.6, 0]}\n#hpct.draw(move=move, with_edge_labels=True, figsize=(14,14))\n\n\nfrom pct.environments import Pendulum\nfrom pct.functions import Constant\n\n\npen = Pendulum(name='Pendulum',render=True, seed=1)\nnamespace = pen.namespace\n#print(namespace)\ninputs=[2, 3]\nconfig = {'level0': [[[0, 0, 1], [0, 0, 1]], [74.7727669099358, 37.42447782017047, 70.45900090605967], [[1, 0, 1]]], 'level1': [[[1, 0, 1], [1, 1, 1]], [0.028281504070566288, 0.29618653732851286], [[-49.05302284318027, 46.949638698585005], [-96.63198831250754, -29.78373183094591], [-3.8249493797145107, -60.95121501461629]]], 'level2': [[[1, 0], [0, 1]], [0.633350421196448, 0.5607290603484817], [[41.217164164869104, -76.70635343790484], [83.21744682425535, -96.9311066757899]], [1, 2]], 'parameters': {}}\nfor key in config.keys():\n print(key, config[key])\npa = ProportionalArchitecture(config=config, env=pen, input_indexes=inputs, namespace=namespace)\npa()\nhpct = pa.get_hierarchy()\nhpct.draw(move={'Pendulum': [-0.2, -0.3],'Input0': [-0.3, 0], 'Input1': [0.3, 0]})\n\nlevel0 [[[0, 0, 1], [0, 0, 1]], [74.7727669099358, 37.42447782017047, 70.45900090605967], [[1, 0, 1]]]\nlevel1 [[[1, 0, 1], [1, 1, 1]], [0.028281504070566288, 0.29618653732851286], [[-49.05302284318027, 46.949638698585005], [-96.63198831250754, -29.78373183094591], [-3.8249493797145107, -60.95121501461629]]]\nlevel2 [[[1, 0], [0, 1]], [0.633350421196448, 0.5607290603484817], [[41.217164164869104, -76.70635343790484], [83.21744682425535, -96.9311066757899]], [1, 2]]\nparameters {}\n\n\n\npen = Pendulum(name='Pendulum',render=True, seed=1)\nnamespace = pen.namespace\ninputs=[2, 3]\nconfig = {'level0': [[[0], [0]], [60.92750637861888], [[1]]], 'level1': [[[1], [1]], [0.8221926728404025, 0.5936199577845901], [[2.941087338758976, -68.59700733589955]], [1, 2]], 'parameters': {}}\nfor key in config.keys():\n print(key, config[key])\npa = ProportionalArchitecture(config=config, env=pen, input_indexes=inputs, namespace = namespace)\npa()\nhpct = pa.get_hierarchy()\nhpct.draw(move={'Pendulum': [-0.2, -0.3],'Input0': [-0.3, 0], 'Input1': [0.3, 0]})\n\nlevel0 [[[0], [0]], [60.92750637861888], [[1]]]\nlevel1 [[[1], [1]], [0.8221926728404025, 0.5936199577845901], [[2.941087338758976, -68.59700733589955]], [1, 2]]\nparameters {}\n\n\n\npen = Pendulum(name='Pendulum',render=True, seed=1)\nnamespace = pen.namespace\ninputs=[2]\nconfig = {'level0': [[[1]], [62.82423385532463], [[0]], [1]], 'parameters': {}}\nfor key in config.keys():\n print(key, config[key])\n \npa = ProportionalArchitecture(config=config, env=pen, input_indexes=inputs, namespace = namespace)\npa()\nhpct = pa.get_hierarchy()\nhpct.draw(move={'Pendulum': [-0.2, -0.3],'Input0': [-0.3, 0]})\n\nlevel0 [[[1]], [62.82423385532463], [[0]], [1]]\nparameters {}", + "crumbs": [ + "Architectures" + ] + }, + { + "objectID": "examples.html", + "href": "examples.html", + "title": "Examples", + "section": "", + "text": "The autoreload extension is already loaded. To reload it, use:\n %reload_ext autoreload\nimport gym, warnings\nrender=False\nruns=1\nrender=True\nruns=2000", + "crumbs": [ + "Examples" + ] + }, + { + "objectID": "examples.html#cartpole", + "href": "examples.html#cartpole", + "title": "Examples", + "section": "Cartpole", + "text": "Cartpole\nCartpole is an Open AI gym environment for the inverted pendulum problem. The goal is to keep the pole balanced, by moving the cart left or right.\nThe environment provides observations (perceptions) for the state of the cart and pole.\n0 - Cart Position\n1 - Cart Velocity\n2 - Pole Angle\n3 - Pole Angular Velocity\nIt takes one value, of 0 or 1, for applying a force to the left or right, respectively.\nThe PCT solution is a four-level hierarchy for controlling the perceptions at goal values. Only one goal reference is manually set, the highest level which is the pole angle of 0.\nThis example shows how a perceptual control hierarchy can be implemented with this library.\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom pct.hierarchy import PCTHierarchy\nfrom pct.putils import FunctionsList\nfrom pct.environments import CartPoleV1\nfrom pct.functions import IndexedParameter\nfrom pct.functions import Integration\nfrom pct.functions import GreaterThan\nfrom pct.functions import PassOn\n\nCreate a hierarchy of 4 levels each with one node.\n\ncartpole_hierarchy = PCTHierarchy(levels=4, cols=1, name=\"cartpoleh\", build=False)\nnamespace=cartpole_hierarchy.namespace\ncartpole_hierarchy.get_node(0, 0).name = 'cart_velocity_node'\ncartpole_hierarchy.get_node(1, 0).name = 'cart_position_node'\ncartpole_hierarchy.get_node(2, 0).name = 'pole_velocity_node'\ncartpole_hierarchy.get_node(3, 0).name = 'pole_angle_node'\n#FunctionsList.getInstance().report()\n#cartpole_hierarchy.summary(build=True)\n\nCreate the Cartpole gym environment function. This will apply the “action” output from the hierarchy and provide the new observations.\n\ncartpole = CartPoleV1(name=\"CartPole-v1\", render=render, namespace=namespace, seed=1)\n\nCreate functions for each of the observation parameters of the Cartpole environment. Insert them into the hierarchy at the desired places.\n\ncartpole_hierarchy.insert_function(level=0, col=0, collection=\"perception\", function=IndexedParameter(index=1, name=\"cart_velocity\", links=[cartpole], namespace=namespace))\ncartpole_hierarchy.insert_function(level=1, col=0, collection=\"perception\", function=IndexedParameter(index=0, name=\"cart_position\", links=[cartpole], namespace=namespace))\ncartpole_hierarchy.insert_function(level=2, col=0, collection=\"perception\", function=IndexedParameter(index=3, name=\"pole_velocity\", links=[cartpole], namespace=namespace))\ncartpole_hierarchy.insert_function(level=3, col=0, collection=\"perception\", function=IndexedParameter(index=2, name=\"pole_angle\", links=[cartpole], namespace=namespace))\n\nLink the references to the outputs of the level up.\n\ncartpole_hierarchy.insert_function(level=0, col=0, collection=\"reference\", function=PassOn(name=\"cart_velocity_reference\", links=['proportional1'], namespace=namespace))\ncartpole_hierarchy.insert_function(level=1, col=0, collection=\"reference\", function=PassOn(name=\"cart_position_reference\", links=['proportional2'], namespace=namespace))\ncartpole_hierarchy.insert_function(level=2, col=0, collection=\"reference\", function=PassOn(name=\"pole_velocity_reference\", links=['proportional3'], namespace=namespace))\n\nSet the highest level reference.\n\ntop = cartpole_hierarchy.get_function(level=3, col=0, collection=\"reference\")\ntop.set_name(\"pole_angle_reference\")\ntop.set_value(0)\n\nLink the output of the hierarchy back to the Cartpole environment.\n\ncartpole_hierarchy.summary(build=True)\n\n**************************\ncartpoleh PCTHierarchy [1, 1, 1, 1] 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n--------------------------\nPRE: None\nLevel 0 Cols 1\ncart_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: cart_velocity_reference PassOn | 0 | links proportional1 \nPER: cart_velocity IndexedParameter | index 1 | 0 | links CartPole-v1 \nCOM: subtract Subtract | 0 | links cart_velocity_reference cart_velocity \nOUT: proportional Proportional | gain 1 | 0 | links subtract \n----------------------------\nLevel 1 Cols 1\ncart_position_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: cart_position_reference PassOn | 0 | links proportional2 \nPER: cart_position IndexedParameter | index 0 | 0 | links CartPole-v1 \nCOM: subtract1 Subtract | 0 | links cart_position_reference cart_position \nOUT: proportional1 Proportional | gain 1 | 0 | links subtract1 \n----------------------------\nLevel 2 Cols 1\npole_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: pole_velocity_reference PassOn | 0 | links proportional3 \nPER: pole_velocity IndexedParameter | index 3 | 0 | links CartPole-v1 \nCOM: subtract2 Subtract | 0 | links pole_velocity_reference pole_velocity \nOUT: proportional2 Proportional | gain 1 | 0 | links subtract2 \n----------------------------\nLevel 3 Cols 1\npole_angle_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: pole_angle_reference Constant | 0 \nPER: pole_angle IndexedParameter | index 2 | 0 | links CartPole-v1 \nCOM: subtract3 Subtract | 0 | links pole_angle_reference pole_angle \nOUT: proportional3 Proportional | gain 1 | 0 | links subtract3 \n----------------------------\nPOST: None\n**************************\n\n\n\ncartpole_hierarchy.insert_function(level=0, col=0, collection=\"output\", function=Integration(gain=-0.05, slow=4, name=\"force\", links='subtract', namespace=namespace))\n\nSet the names and gains of the output functions. This also shows another way of getting a function, by name.\n\nFunctionsList.getInstance().get_function(namespace=namespace, name=\"proportional3\").set_name(\"pole_angle_output\")\nFunctionsList.getInstance().get_function(namespace=namespace, name=\"pole_angle_output\").set_property('gain', 3.5)\n\nFunctionsList.getInstance().get_function(namespace=namespace, name=\"proportional2\").set_name(\"pole_velocity_output\")\nFunctionsList.getInstance().get_function(namespace=namespace, name=\"pole_velocity_output\").set_property('gain', 0.5)\n\nFunctionsList.getInstance().get_function(namespace=namespace, name=\"proportional1\").set_name(\"cart_position_output\")\nFunctionsList.getInstance().get_function(namespace=namespace, name=\"cart_position_output\").set_property('gain', 2)\n\nAdd a post function to convert the output to 1 or 0 as required by the Cartpole environment.\n\ngreaterthan = GreaterThan(threshold=0, upper=1, lower=0, links='force', namespace=namespace)\ncartpole_hierarchy.add_postprocessor(greaterthan)\n\nAdd the cartpole function as one that is executed before the actual hierarchy.\n\ncartpole_hierarchy.add_preprocessor(cartpole)\n\nSet the output of the hierachy as the action input to the Cartpole environment.\n\n#link = cartpole_hierarchy.get_output_function()\ncartpole.add_link(greaterthan)\n\nSit back and observe the brilliance of your efforts.\n\ncartpole_hierarchy.set_order(\"Down\")\n\n\ncartpole_hierarchy.summary()\n\n**************************\ncartpoleh PCTHierarchy [1, 1, 1, 1] 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n--------------------------\nPRE: CartPole-v1 CartPoleV1 | 0 | links greaterthan \nLevel 3 Cols 1\npole_angle_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: pole_angle_reference Constant | 0 \nPER: pole_angle IndexedParameter | index 2 | 0 | links CartPole-v1 \nCOM: subtract3 Subtract | 0 | links pole_angle_reference pole_angle \nOUT: pole_angle_output Proportional | gain 3.5 | 0 | links subtract3 \n----------------------------\nLevel 2 Cols 1\npole_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: pole_velocity_reference PassOn | 0 | links pole_angle_output \nPER: pole_velocity IndexedParameter | index 3 | 0 | links CartPole-v1 \nCOM: subtract2 Subtract | 0 | links pole_velocity_reference pole_velocity \nOUT: pole_velocity_output Proportional | gain 0.5 | 0 | links subtract2 \n----------------------------\nLevel 1 Cols 1\ncart_position_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: cart_position_reference PassOn | 0 | links pole_velocity_output \nPER: cart_position IndexedParameter | index 0 | 0 | links CartPole-v1 \nCOM: subtract1 Subtract | 0 | links cart_position_reference cart_position \nOUT: cart_position_output Proportional | gain 2 | 0 | links subtract1 \n----------------------------\nLevel 0 Cols 1\ncart_velocity_node PCTNode 0a8fcbad-d648-11ee-ae91-8cf8c5b8669b\n----------------------------\nREF: cart_velocity_reference PassOn | 0 | links cart_position_output \nPER: cart_velocity IndexedParameter | index 1 | 0 | links CartPole-v1 \nCOM: subtract Subtract | 0 | links cart_velocity_reference cart_velocity \nOUT: force Integration | gain -0.05 slow 4 | 0 | links subtract \n----------------------------\nPOST: greaterthan GreaterThan | threshold 0 upper 1 lower 0 | 0 | links force \n**************************\n\n\n\ncartpole_hierarchy.draw(font_size=10, figsize=(8,12), move={'CartPole-v1': [-0.075, 0]}, node_size=1000, node_color='red')\n\n\ncartpole_hierarchy.save(\"cartpole.json\")\n\n\nimport networkx as nx\ngr = cartpole_hierarchy.graph()\nwith warnings.catch_warnings():\n warnings.simplefilter(\"ignore\")\n print(nx.info(gr))\n print(gr.nodes())\n\nDiGraph with 18 nodes and 21 edges\n['greaterthan', 'force', 'CartPole-v1', 'cart_velocity_reference', 'cart_position_output', 'subtract', 'cart_velocity', 'cart_position_reference', 'pole_velocity_output', 'subtract1', 'cart_position', 'pole_velocity_reference', 'pole_angle_output', 'subtract2', 'pole_velocity', 'pole_angle_reference', 'subtract3', 'pole_angle']\n\n\nRun the hierarchy for 500 steps.\n\ncartpole_hierarchy.run(1,verbose=False)\n\n1\n\n\n\ncartpole_hierarchy.run(runs,verbose=False)\n\n1\n\n\n\ncartpole.close()", + "crumbs": [ + "Examples" + ] + }, + { + "objectID": "network.html", + "href": "network.html", + "title": "Network", + "section": "", + "text": "source\n\nServer\n\n Server (host='localhost', port=6666, buf_size=1024)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nClient\n\n Client (host='localhost', port=6666, buf_size=1024)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nClientConnectionManager\n\n ClientConnectionManager (host='localhost', port=6666, buf_size=1024)\n\nA utility for managing a client socket connection.\n\nsource\n\n\nServerConnectionManager\n\n ServerConnectionManager (host='localhost', port=6666, buf_size=1024)\n\nA utility for managing a client socket connection.", + "crumbs": [ + "Network" + ] + }, + { + "objectID": "nodes.html", + "href": "nodes.html", + "title": "Nodes", + "section": "", + "text": "A node comprises four functions, reference, perceptual, comparator and output. Executing the node will run each of the functions in the order indicated above and return the output value.\nThe functions can actually be a collection of functions, each executed in the order they are added. This allows a chain of functions in case pre-processing is required, or post-processing in the case of the output.\n\nsource\n\n\n\n ControlUnitIndices (value, names=None, module=None, qualname=None,\n type=None, start=1)\n\nAn enumeration.\n\nsource\n\n\n\n\n PCTNode (reference=None, perception=None, comparator=None, output=None,\n default=True, name='pctnode', history=False, build_links=False,\n mode=0, namespace=None, **pargs)\n\nA single PCT controller.\n\n#node = PCTNode()\n#node.summary()\n\n\nsource\n\n\n\n\n PCTNodeData (name='pctnodedata')\n\nData collected for a PCTNode", + "crumbs": [ + "Nodes" + ] + }, + { + "objectID": "nodes.html#overview", + "href": "nodes.html#overview", + "title": "Nodes", + "section": "", + "text": "A node comprises four functions, reference, perceptual, comparator and output. Executing the node will run each of the functions in the order indicated above and return the output value.\nThe functions can actually be a collection of functions, each executed in the order they are added. This allows a chain of functions in case pre-processing is required, or post-processing in the case of the output.\n\nsource\n\n\n\n ControlUnitIndices (value, names=None, module=None, qualname=None,\n type=None, start=1)\n\nAn enumeration.\n\nsource\n\n\n\n\n PCTNode (reference=None, perception=None, comparator=None, output=None,\n default=True, name='pctnode', history=False, build_links=False,\n mode=0, namespace=None, **pargs)\n\nA single PCT controller.\n\n#node = PCTNode()\n#node.summary()\n\n\nsource\n\n\n\n\n PCTNodeData (name='pctnodedata')\n\nData collected for a PCTNode", + "crumbs": [ + "Nodes" + ] + }, + { + "objectID": "nodes.html#creating-a-node", + "href": "nodes.html#creating-a-node", + "title": "Nodes", + "section": "Creating a Node", + "text": "Creating a Node\nA node can be created simply.\n\nnode = PCTNode()\nnode.summary()\n\npctnode PCTNode e2723476-b938-11ee-9ede-5c879c15de65\n----------------------------\nREF: constant Constant | 0 \nPER: variable Variable | 0 \nCOM: subtract Subtract | 0 | links constant variable \nOUT: proportional Proportional | gain 1 | 0 | links subtract \n----------------------------\n\n\nThat creates a node with default functions. Those are, a constant of 1 for the reference, a variable, with initial value 0, for the perception and a proportional function for the output, with a gain of 10.\nA node can also be created by providing a name, and setting the history to True. The latter means that the values of all the functions are recorded during execution, which is useful for plotting the data later, as can be seen below.\n\ndynamic_module_import( 'pct.functions', 'Constant')\n\n\nreference = Constant(1)\nnamespace=reference.namespace\n\n\nnode = PCTNode(name=\"mypctnode\", history=True, reference = reference, output=Proportional(10, namespace=namespace), namespace=namespace)\nnode.summary()\n\nmypctnode PCTNode e281ebf9-b938-11ee-944f-5c879c15de65\n----------------------------\nREF: constant Constant | 1 \nPER: variable Variable | 0 \nCOM: subtract Subtract | 0 | links constant variable \nOUT: proportional Proportional | gain 10 | 0 | links subtract \n----------------------------\n\n\nAnother way of creating a node is by first declaring the functions you want and passing them into the constructor.\n\nUniqueNamer.getInstance().clear()\nr = Variable(0, name=\"velocity_reference\")\np = Constant(10, name=\"constant_perception\")\no = Integration(10, 100, name=\"integrator\")\nintegratingnode = PCTNode(reference=r, perception=p, output=o, name=\"integratingnode\", history=True)\n\nYet another way to create a node is from a text configuration.\n\nconfig_node = PCTNode.from_config({ 'name': 'mypctnode', \n 'refcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 10}}, \n 'percoll': {'0': {'type': 'Variable', 'name': 'velocity', 'value': 0.2, 'links': {}}}, \n 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 1, 'links': {0: 'constant', 1: 'velocity'}}}, \n 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 10, 'links': {0: 'subtract'}, 'gain': 10}}})\n# config_node = PCTNode.from_config({ 'name': 'mypctnode1', \n# 'refcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 10}}, \n# 'percoll': {'0': {'type': 'Variable', 'name': 'velocity', 'value': 0.2, 'links': {}}}, \n# 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 1, 'links': {0: 'constant', 1: 'velocity'}}}, \n# 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 10, 'links': {0: 'subtract'}, 'gain': 10}}}, namespace=namespace)", + "crumbs": [ + "Nodes" + ] + }, + { + "objectID": "nodes.html#viewing-nodes", + "href": "nodes.html#viewing-nodes", + "title": "Nodes", + "section": "Viewing Nodes", + "text": "Viewing Nodes\nThe details of a node can be viewed in a number of ways, which is useful for checking the configuration. The summary method prints to the screen. The get_config method returns a string in a JSON format.\n\nintegratingnode.summary()\n\nintegratingnode PCTNode e28f596d-b938-11ee-a963-5c879c15de65\n----------------------------\nREF: velocity_reference Variable | 0 \nPER: constant_perception Constant | 10 \nCOM: subtract Subtract | 0 | links velocity_reference constant_perception \nOUT: integrator Integration | gain 10 slow 100 | 0 | links subtract \n----------------------------\n\n\n\n#print(integratingnode.get_config())\nassert integratingnode.get_config() == {'type': 'PCTNode', 'name': 'integratingnode', 'refcoll': {'0': {'type': 'Variable', 'name': 'velocity_reference', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'Constant', 'name': 'constant_perception', 'value': 10, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'velocity_reference', 1: 'constant_perception'}}}, 'outcoll': {'0': {'type': 'Integration', 'name': 'integrator', 'value': 0, 'links': {0: 'subtract'}, 'gain': 10, 'slow': 100}}}\nintegratingnode.get_config()\n\n{'type': 'PCTNode',\n 'name': 'integratingnode',\n 'refcoll': {'0': {'type': 'Variable',\n 'name': 'velocity_reference',\n 'value': 0,\n 'links': {}}},\n 'percoll': {'0': {'type': 'Constant',\n 'name': 'constant_perception',\n 'value': 10,\n 'links': {}}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract',\n 'value': 0,\n 'links': {0: 'velocity_reference', 1: 'constant_perception'}}},\n 'outcoll': {'0': {'type': 'Integration',\n 'name': 'integrator',\n 'value': 0,\n 'links': {0: 'subtract'},\n 'gain': 10,\n 'slow': 100}}}\n\n\nA node can also be viewed graphically as a network of connected nodes.\n\nimport os\n\n\nif os.name=='nt':\n integratingnode.draw(node_size=2000, figsize=(8,4))", + "crumbs": [ + "Nodes" + ] + }, + { + "objectID": "nodes.html#running-a-node", + "href": "nodes.html#running-a-node", + "title": "Nodes", + "section": "Running a Node", + "text": "Running a Node\nFor the purposes of this example we first create a function which is a very basic model of the physical environment. It defines how the world behaves when we pass it the output of the control system.\n\ndef velocity_model(velocity, force , mass):\n velocity = velocity + force / mass\n return velocity\n\nmass = 50\nforce = 0\n\nIn the following cell we start with a velocity of zero. The node is run once (second line), the output of which is the force to apply in the world velocity_model. That returns the updated velocity which we pass back into the node to be used in the next iteration of the loop.\n\nvelocity=0\nforce = node()\nvelocity = velocity_model(velocity, force, mass)\nnode.set_perception_value(velocity)\nprint(force)\nassert force == 10\n\n10\n\n\nThe node can be run in a loop as shown below. With verbose set to True the output of each loop will be printed to the screen.\n\npctnode = PCTNode(history=True)\npctnode.set_function_name(\"perception\", \"velocity\")\npctnode.set_function_name(\"reference\", \"reference\")\n\nfor i in range(40):\n print(i, end=\" \")\n force = pctnode(verbose=True)\n vel = velocity_model(pctnode.get_perception_value(), force, mass)\n pctnode.set_perception_value(vel)\n\n0 0.000 0.000 0.000 0.000 \n1 0.000 0.000 0.000 0.000 \n2 0.000 0.000 0.000 0.000 \n3 0.000 0.000 0.000 0.000 \n4 0.000 0.000 0.000 0.000 \n5 0.000 0.000 0.000 0.000 \n6 0.000 0.000 0.000 0.000 \n7 0.000 0.000 0.000 0.000 \n8 0.000 0.000 0.000 0.000 \n9 0.000 0.000 0.000 0.000 \n10 0.000 0.000 0.000 0.000 \n11 0.000 0.000 0.000 0.000 \n12 0.000 0.000 0.000 0.000 \n13 0.000 0.000 0.000 0.000 \n14 0.000 0.000 0.000 0.000 \n15 0.000 0.000 0.000 0.000 \n16 0.000 0.000 0.000 0.000 \n17 0.000 0.000 0.000 0.000 \n18 0.000 0.000 0.000 0.000 \n19 0.000 0.000 0.000 0.000 \n20 0.000 0.000 0.000 0.000 \n21 0.000 0.000 0.000 0.000 \n22 0.000 0.000 0.000 0.000 \n23 0.000 0.000 0.000 0.000 \n24 0.000 0.000 0.000 0.000 \n25 0.000 0.000 0.000 0.000 \n26 0.000 0.000 0.000 0.000 \n27 0.000 0.000 0.000 0.000 \n28 0.000 0.000 0.000 0.000 \n29 0.000 0.000 0.000 0.000 \n30 0.000 0.000 0.000 0.000 \n31 0.000 0.000 0.000 0.000 \n32 0.000 0.000 0.000 0.000 \n33 0.000 0.000 0.000 0.000 \n34 0.000 0.000 0.000 0.000 \n35 0.000 0.000 0.000 0.000 \n36 0.000 0.000 0.000 0.000 \n37 0.000 0.000 0.000 0.000 \n38 0.000 0.000 0.000 0.000 \n39 0.000 0.000 0.000 0.000", + "crumbs": [ + "Nodes" + ] + }, + { + "objectID": "nodes.html#save-and-load", + "href": "nodes.html#save-and-load", + "title": "Nodes", + "section": "Save and Load", + "text": "Save and Load\nSave a node to file.\n\nimport json\n\n\nintegratingnode.save(\"inode.json\")\n\nCreate a node from file.\n\nnnode = PCTNode.load(\"inode.json\")\nnnode.summary()\nprint(nnode.get_config())\n\nintegratingnode PCTNode 576b00b4-b939-11ee-9e11-5c879c15de65\n----------------------------\nREF: velocity_reference Variable | 0 \nPER: constant_perception Constant | 10 \nCOM: subtract Subtract | 0 | links velocity_reference constant_perception \nOUT: integrator Integration | gain 10 slow 100 | 0 | links subtract \n----------------------------\n{'type': 'PCTNode', 'name': 'integratingnode', 'refcoll': {'0': {'type': 'Variable', 'name': 'velocity_reference', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'Constant', 'name': 'constant_perception', 'value': 10, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'velocity_reference', 1: 'constant_perception'}}}, 'outcoll': {'0': {'type': 'Integration', 'name': 'integrator', 'value': 0, 'links': {0: 'subtract'}, 'gain': 10, 'slow': 100}}}\n\n\n\nprint(nnode.get_summary())\n\n0.000 10.000 0.000 0.000", + "crumbs": [ + "Nodes" + ] + }, + { + "objectID": "nodes.html#plotting-the-data", + "href": "nodes.html#plotting-the-data", + "title": "Nodes", + "section": "Plotting the Data", + "text": "Plotting the Data\nAs the history of the variable pctnode was set to True the data is available for analysis. It can be plotted with python libraries such as matplotlib or plotly. Here is an example with the latter.\nThe graph shows the changing perception values as it is controlled to match the reference value.\nimport plotly.graph_objects as go\nfig = go.Figure(layout_title_text=\"Velocity Goal\")\nfig.add_trace(go.Scatter(y=pctnode.history.data['refcoll']['reference'], name=\"ref\"))\nfig.add_trace(go.Scatter(y=pctnode.history.data['percoll']['velocity'], name=\"perc\"))\nThis following code is only for the purposes of displaying image of the graph generated by the above code.\n\nfrom IPython.display import Image\n\n\nImage(url='http://www.perceptualrobots.com/wp-content/uploads/2020/08/pct_node_plot.png')", + "crumbs": [ + "Nodes" + ] + }, + { + "objectID": "arc.html", + "href": "arc.html", + "title": "ARC environment classes", + "section": "", + "text": "source\n\n\n\n ARCDataProcessor (config_dict, arc_dict)\n\nInitialize self. See help(type(self)) for accurate signature.\n\n# Example usage:\nprint('Example using dims only')\nconfig_dict = {\n 'control_set': ['dims'],\n 'input_set': ['env'],\n 'dataset': 'train',\n 'index': 0\n}\n\narc_dict = {\n 'test': [{'input': [[7, 0, 7], [7, 0, 7], [7, 7, 0]]}],\n 'train': [\n {'input': [[0, 7, 7], [7, 7, 7], [0, 7, 7]], 'output': [[0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [7, 7, 7, 7, 7, 7, 7, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7]]}\n # Add more entries as needed\n ]\n}\n\ngp = ARCDataProcessor(config_dict, arc_dict)\ninfo = gp.create_info()\nprint(info)\nins = gp.get_env_inputs_names()\nprint('names', ins)\ninds = gp.get_env_inputs_indexes()\nprint('indexes', inds)\n\nstate, info = gp.get_state()\nprint(info)\nprint('fitness', gp.fitness_function(), state)\nprint()\n\nfor i in range(-2,-4,-1):\n actions = [i]\n gp.apply_actions(actions)\n state, info = gp.get_state()\n print(info)\n # print(len(values))\n print('fitness', gp.fitness_function(), state)\n print()\n\nExample using dims only\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nnames ['IWE']\nindexes [0]\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nfitness 72 {'inputs': {'dims': {'env': (3,)}}}\n\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nfitness 128 {'inputs': {'dims': {'env': (1,)}}}\n\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nfitness 128 {'inputs': {'dims': {'env': (1,)}}}\n\n\n\n\n# Example usage:\nprint('Example using env inputs only')\nconfig_dict = {\n 'control_set': ['cells'],\n 'input_set': ['env'],\n 'dataset': 'train',\n 'index': 0\n}\n\ngp = ARCDataProcessor(config_dict, arc_dict)\ninfo = gp.create_info()\nprint(info)\nins = gp.get_env_inputs_names()\nprint('names', ins)\ninds = gp.get_env_inputs_indexes()\nprint('indexes', inds)\n\nstate, info = gp.get_state()\nprint(info)\nprint('fitness', gp.fitness_function(), state)\nprint()\n\nfor i in range(-2,-4,-1):\n actions = [i for j in range(info['num_actions'])]\n print(actions)\n gp.apply_actions(actions)\n state, info = gp.get_state()\n print(info)\n # print(len(values))\n print('fitness', gp.fitness_function(), state)\n print()\n\nExample using env inputs only\n{'num_actions': 9, 'env': (3, 3)}\nnames ['IE001', 'IE002', 'IE003', 'IE004', 'IE005', 'IE006', 'IE007', 'IE008', 'IE009']\nindexes [0, 1, 2, 3, 4, 5, 6, 7, 8]\n{'num_actions': 9, 'env': (3, 3)}\nfitness 2143.0 {'inputs': {'cells': {'env': array([[0., 7., 7.],\n [7., 7., 7.],\n [0., 7., 7.]], dtype=float32)}}}\n\n[-2, -2, -2, -2, -2, -2, -2, -2, -2]\n{'num_actions': 9, 'env': (3, 3)}\nfitness 1975.0 {'inputs': {'cells': {'env': array([[0., 5., 5.],\n [5., 5., 5.],\n [0., 5., 5.]], dtype=float32)}}}\n\n[-3, -3, -3, -3, -3, -3, -3, -3, -3]\n{'num_actions': 9, 'env': (3, 3)}\nfitness 1828.0 {'inputs': {'cells': {'env': array([[0., 2., 2.],\n [2., 2., 2.],\n [0., 2., 2.]], dtype=float32)}}}\n\n\n\n\n# Example usage:\nprint('Example using cells only')\nconfig_dict = {\n 'control_set': ['cells'],\n 'input_set': ['env','inputs'],\n # 'input_set': ['env','inputs', 'outputs'],\n 'dataset': 'train',\n 'index': 0\n}\n\ngp = ARCDataProcessor(config_dict, arc_dict)\ninfo = gp.create_info()\nprint(info)\n\nins = gp.get_env_inputs_names()\nprint('names', ins)\ninds = gp.get_env_inputs_indexes()\nprint('indexes', inds)\n\nstate, info = gp.get_state()\nprint(info)\nprint('fitness', gp.fitness_function(), state)\nprint()\n\nExample using cells only\n{'num_actions': 9, 'env': (3, 3), 'inputs': (3, 3)}\nnames ['IE001', 'IE002', 'IE003', 'IE004', 'IE005', 'IE006', 'IE007', 'IE008', 'IE009', 'II001', 'II002', 'II003', 'II004', 'II005', 'II006', 'II007', 'II008', 'II009']\nindexes [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]\n{'num_actions': 9, 'env': (3, 3), 'inputs': (3, 3)}\nfitness 2143.0 {'inputs': {'cells': {'env': array([[0., 7., 7.],\n [7., 7., 7.],\n [0., 7., 7.]], dtype=float32), 'inputs': array([[0, 7, 7],\n [7, 7, 7],\n [0, 7, 7]])}}}", + "crumbs": [ + "ARC environment classes" + ] + }, + { + "objectID": "arc.html#arcdataprocessor", + "href": "arc.html#arcdataprocessor", + "title": "ARC environment classes", + "section": "", + "text": "source\n\n\n\n ARCDataProcessor (config_dict, arc_dict)\n\nInitialize self. See help(type(self)) for accurate signature.\n\n# Example usage:\nprint('Example using dims only')\nconfig_dict = {\n 'control_set': ['dims'],\n 'input_set': ['env'],\n 'dataset': 'train',\n 'index': 0\n}\n\narc_dict = {\n 'test': [{'input': [[7, 0, 7], [7, 0, 7], [7, 7, 0]]}],\n 'train': [\n {'input': [[0, 7, 7], [7, 7, 7], [0, 7, 7]], 'output': [[0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [7, 7, 7, 7, 7, 7, 7, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7]]}\n # Add more entries as needed\n ]\n}\n\ngp = ARCDataProcessor(config_dict, arc_dict)\ninfo = gp.create_info()\nprint(info)\nins = gp.get_env_inputs_names()\nprint('names', ins)\ninds = gp.get_env_inputs_indexes()\nprint('indexes', inds)\n\nstate, info = gp.get_state()\nprint(info)\nprint('fitness', gp.fitness_function(), state)\nprint()\n\nfor i in range(-2,-4,-1):\n actions = [i]\n gp.apply_actions(actions)\n state, info = gp.get_state()\n print(info)\n # print(len(values))\n print('fitness', gp.fitness_function(), state)\n print()\n\nExample using dims only\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nnames ['IWE']\nindexes [0]\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nfitness 72 {'inputs': {'dims': {'env': (3,)}}}\n\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nfitness 128 {'inputs': {'dims': {'env': (1,)}}}\n\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nfitness 128 {'inputs': {'dims': {'env': (1,)}}}\n\n\n\n\n# Example usage:\nprint('Example using env inputs only')\nconfig_dict = {\n 'control_set': ['cells'],\n 'input_set': ['env'],\n 'dataset': 'train',\n 'index': 0\n}\n\ngp = ARCDataProcessor(config_dict, arc_dict)\ninfo = gp.create_info()\nprint(info)\nins = gp.get_env_inputs_names()\nprint('names', ins)\ninds = gp.get_env_inputs_indexes()\nprint('indexes', inds)\n\nstate, info = gp.get_state()\nprint(info)\nprint('fitness', gp.fitness_function(), state)\nprint()\n\nfor i in range(-2,-4,-1):\n actions = [i for j in range(info['num_actions'])]\n print(actions)\n gp.apply_actions(actions)\n state, info = gp.get_state()\n print(info)\n # print(len(values))\n print('fitness', gp.fitness_function(), state)\n print()\n\nExample using env inputs only\n{'num_actions': 9, 'env': (3, 3)}\nnames ['IE001', 'IE002', 'IE003', 'IE004', 'IE005', 'IE006', 'IE007', 'IE008', 'IE009']\nindexes [0, 1, 2, 3, 4, 5, 6, 7, 8]\n{'num_actions': 9, 'env': (3, 3)}\nfitness 2143.0 {'inputs': {'cells': {'env': array([[0., 7., 7.],\n [7., 7., 7.],\n [0., 7., 7.]], dtype=float32)}}}\n\n[-2, -2, -2, -2, -2, -2, -2, -2, -2]\n{'num_actions': 9, 'env': (3, 3)}\nfitness 1975.0 {'inputs': {'cells': {'env': array([[0., 5., 5.],\n [5., 5., 5.],\n [0., 5., 5.]], dtype=float32)}}}\n\n[-3, -3, -3, -3, -3, -3, -3, -3, -3]\n{'num_actions': 9, 'env': (3, 3)}\nfitness 1828.0 {'inputs': {'cells': {'env': array([[0., 2., 2.],\n [2., 2., 2.],\n [0., 2., 2.]], dtype=float32)}}}\n\n\n\n\n# Example usage:\nprint('Example using cells only')\nconfig_dict = {\n 'control_set': ['cells'],\n 'input_set': ['env','inputs'],\n # 'input_set': ['env','inputs', 'outputs'],\n 'dataset': 'train',\n 'index': 0\n}\n\ngp = ARCDataProcessor(config_dict, arc_dict)\ninfo = gp.create_info()\nprint(info)\n\nins = gp.get_env_inputs_names()\nprint('names', ins)\ninds = gp.get_env_inputs_indexes()\nprint('indexes', inds)\n\nstate, info = gp.get_state()\nprint(info)\nprint('fitness', gp.fitness_function(), state)\nprint()\n\nExample using cells only\n{'num_actions': 9, 'env': (3, 3), 'inputs': (3, 3)}\nnames ['IE001', 'IE002', 'IE003', 'IE004', 'IE005', 'IE006', 'IE007', 'IE008', 'IE009', 'II001', 'II002', 'II003', 'II004', 'II005', 'II006', 'II007', 'II008', 'II009']\nindexes [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]\n{'num_actions': 9, 'env': (3, 3), 'inputs': (3, 3)}\nfitness 2143.0 {'inputs': {'cells': {'env': array([[0., 7., 7.],\n [7., 7., 7.],\n [0., 7., 7.]], dtype=float32), 'inputs': array([[0, 7, 7],\n [7, 7, 7],\n [0, 7, 7]])}}}", + "crumbs": [ + "ARC environment classes" + ] + }, + { + "objectID": "arc.html#arcenv", + "href": "arc.html#arcenv", + "title": "ARC environment classes", + "section": "ARCEnv", + "text": "ARCEnv\n\nsource\n\nARCEnv\n\n ARCEnv (namespace='')\n\n*The main OpenAI Gym class.\nIt encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.\nThe main API methods that users of this class need to know are:\n\n:meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.\n:meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.\n:meth:render - Renders the environment observation with modes depending on the output\n:meth:close - Closes the environment, important for rendering where pygame is imported\n\nAnd set the following attributes:\n\n:attr:action_space - The Space object corresponding to valid actions\n:attr:observation_space - The Space object corresponding to valid observations\n:attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards\n:attr:spec - An environment spec that contains the information used to initialise the environment from gym.make\n:attr:metadata - The metadata of the environment, i.e. render modes\n:attr:np_random - The random number generator for the environment\n\nNote: a default reward range set to :math:(-\\infty,+\\infty) already exists. Set it if you want a narrower range.*\n\n# Example usage:\nprops = {'dir': 'C:\\\\packages\\\\arc-prize-2024', 'file_prefix':'arc-agi_training_', 'code':'007bbfb7', 'control_set': ['dims'], 'input_set': ['env'],'dataset': 'train'}\nfile_name = os.path.join(props['dir'], props['file_prefix']) + 'challenges.json' \nchallenges_manager = ChallengesDataManager(file_name)\ndata = challenges_manager.get_data_for_key(props['code'])\nprint(data)\n# arc_dict={}\n# arc_dict['data'] = data\narc_env = ARCEnv()\narc_env.initialise(props, data)\narc_env.render()\n# print(state, fitness, done)\n# print(arc_env.dimensions)\nfor i in range(6):\n state, fitness, done, info = arc_env.step([1])\n # print(state, fitness, done)\n print(state, fitness, done, info)\n arc_env.render()\n sleep(1)\n\n{'test': [{'input': [[7, 0, 7], [7, 0, 7], [7, 7, 0]]}], 'train': [{'input': [[0, 7, 7], [7, 7, 7], [0, 7, 7]], 'output': [[0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [7, 7, 7, 7, 7, 7, 7, 7, 7], [0, 7, 7, 0, 7, 7, 0, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7], [0, 0, 0, 7, 7, 7, 7, 7, 7], [0, 0, 0, 0, 7, 7, 0, 7, 7]]}, {'input': [[4, 0, 4], [0, 0, 0], [0, 4, 0]], 'output': [[4, 0, 4, 0, 0, 0, 4, 0, 4], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 0, 0, 0, 0, 0, 4, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 0, 4, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 4, 0, 0, 0, 0]]}, {'input': [[0, 0, 0], [0, 0, 2], [2, 0, 2]], 'output': [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 2], [0, 0, 0, 0, 0, 0, 2, 0, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0, 0, 2], [2, 0, 2, 0, 0, 0, 2, 0, 2]]}, {'input': [[6, 6, 0], [6, 0, 0], [0, 6, 6]], 'output': [[6, 6, 0, 6, 6, 0, 0, 0, 0], [6, 0, 0, 6, 0, 0, 0, 0, 0], [0, 6, 6, 0, 6, 6, 0, 0, 0], [6, 6, 0, 0, 0, 0, 0, 0, 0], [6, 0, 0, 0, 0, 0, 0, 0, 0], [0, 6, 6, 0, 0, 0, 0, 0, 0], [0, 0, 0, 6, 6, 0, 6, 6, 0], [0, 0, 0, 6, 0, 0, 6, 0, 0], [0, 0, 0, 0, 6, 6, 0, 6, 6]]}, {'input': [[2, 2, 2], [0, 0, 0], [0, 2, 2]], 'output': [[2, 2, 2, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 2, 0, 2, 2, 0, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 2, 0, 2, 2]]}]}\nstep 2 0\n{'inputs': {'dims': {'env': (4,)}}} 50 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nstep 3 0\n{'inputs': {'dims': {'env': (5,)}}} 32 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nstep 4 0\n{'inputs': {'dims': {'env': (6,)}}} 18 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nstep 5 0\n{'inputs': {'dims': {'env': (7,)}}} 8 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nstep 6 0\n{'inputs': {'dims': {'env': (8,)}}} 2 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nstep 7 0\n{'inputs': {'dims': {'env': (9,)}}} 0 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\n\n\n\nsleep(2)\narc_env.close()", + "crumbs": [ + "ARC environment classes" + ] + }, + { + "objectID": "structure.html", + "href": "structure.html", + "title": "Structure", + "section": "", + "text": "The autoreload extension is already loaded. To reload it, use:\n %reload_ext autoreload\n\n\n\n#sys.path.append(\"..\")\n\n\nsource\n\nLevelKey\n\n LevelKey (value, names=None, module=None, qualname=None, type=None,\n start=1)\n\nAn enumeration.\n\nsource\n\n\nArchitectureStructure\n\n ArchitectureStructure (references=None, config=None, attr_mut_pb=None,\n lower_float=None, upper_float=None,\n levels_limit=None, columns_limit=None, sigma=None,\n mu=None, alpha=None, modes=None, namespace=None,\n **cargs)\n\nArchitectureStructure\n\narch = ArchitectureStructure()\n\n\nconfig = arch.get_config()\nprint(arch.get_config())\ntarget = {'parameters': { 'modes' : {LevelKey.ZERO:3, LevelKey.N:3,LevelKey.TOP:4,LevelKey.ZEROTOP :4} }}\nassert config == target\n\n{'parameters': {'modes': {<LevelKey.ZERO: 'level0'>: 3, <LevelKey.N: 'leveln'>: 3, <LevelKey.TOP: 'leveltop'>: 4, <LevelKey.ZEROTOP: 'level0top'>: 4}}}", + "crumbs": [ + "Structure" + ] + }, + { + "objectID": "unittests_run_hierarchies.html", + "href": "unittests_run_hierarchies.html", + "title": "unittests_run_hierarchies", + "section": "", + "text": "import unittest\nfrom os import sep\nfrom pct.putils import Timer\nfrom pct.hierarchy import PCTHierarchy\nfrom pct.environment_processing import EnvironmentProcessingFactory\n\n\nclass TestRunWindTurbine(unittest.TestCase):\n\n @classmethod\n def setUpClass(cls):\n pass\n\n\n # def test_runMicrogrid(self):\n\n # file = \"G:\\\\My Drive\\\\data\\\\ga\\\\MicroGrid\\\\RewardError-RootMeanSquareError-Mode04\\\\ga-000.017-s001-3x5-m004-MG0001-9b7851aa082d1178ee05750f4b5815ce.properties\"\n # timer = Timer()\n # timer.start()\n # _, score = PCTHierarchy.run_from_file(file, env_props=None, seed=1, render=False, move=None, min=True, history=False, \n # hpct_verbose= False, runs=None, plots_dir=None, early_termination=False)\n # print(f'Score={score:0.3f}')\n # timer.stop()\n # print(f'Mean time: {timer.mean()}')\n\n\n def test_run_s_0538_03(self):\n\n file = \"testfiles\" + sep + \"ga--1362.401-s003-4x3-m005-WT0538-bddf277b0f729cc630efacf91b9f494f.properties\"\n timer = Timer()\n timer.start()\n _, score = PCTHierarchy.run_from_file(file, env_props=None, seed=1, render=False, move=None, min=True, history=False, \n hpct_verbose= False, runs=None, plots_dir=None, early_termination=False)\n print(f'Score={score:0.3f}')\n timer.stop()\n print(f'Mean time: {timer.mean()}')\n\n self.assertAlmostEqual(score, -1362.401471117955 )\n\n def test_run_v_0416_01(self):\n\n file = \"testfiles\" + sep + \"ga--2629.009-s001-5x5-m002-WT0416-31ecb19201d49e8c6f9dd1e172bd6944.properties\"\n timer = Timer()\n timer.start()\n _, score = PCTHierarchy.run_from_file(file, env_props=None, seed=1, render=False, move=None, min=True, history=False, \n hpct_verbose= False, runs=None, plots_dir=None, early_termination=False)\n print(f'Score={score:0.3f}')\n timer.stop()\n print(f'Mean time: {timer.mean()}')\n\n self.assertAlmostEqual(score, -2629.008509888531 )\n\n\nres = unittest.main(argv=[''], verbosity=3, exit=False)\n\ntest_run_s_0538_03 (__main__.TestRunWindTurbine) ... c:\\Users\\ruper\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\gym\\spaces\\box.py:127: UserWarning:\n\nWARN: Box bound precision lowered by casting to float32\n\nok\ntest_run_v_0416_01 (__main__.TestRunWindTurbine) ... \n\n\nScore=-1362.401\nMean time: 0.8087029999999995\n\n\nc:\\Users\\ruper\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\gym\\spaces\\box.py:127: UserWarning:\n\nWARN: Box bound precision lowered by casting to float32\n\nok\n\n----------------------------------------------------------------------\nRan 2 tests in 1.691s\n\nOK\n\n\nScore=-2629.009\nMean time: 0.8790523999999991\n\n\n\nassert len(res.result.failures) == 0\nassert len(res.result.errors) == 0", + "crumbs": [ + "unittests_run_hierarchies" + ] + }, + { + "objectID": "microgrid.html", + "href": "microgrid.html", + "title": "MicroGrid", + "section": "", + "text": "from os import getcwd\n# getcwd()\n\n\nsource\n\nMicroGridEnvPlus\n\n MicroGridEnvPlus (**kwargs)\n\n*The main OpenAI Gym class.\nIt encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.\nThe main API methods that users of this class need to know are:\n\n:meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.\n:meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.\n:meth:render - Renders the environment observation with modes depending on the output\n:meth:close - Closes the environment, important for rendering where pygame is imported\n\nAnd set the following attributes:\n\n:attr:action_space - The Space object corresponding to valid actions\n:attr:observation_space - The Space object corresponding to valid observations\n:attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards\n:attr:spec - An environment spec that contains the information used to initialise the environment from gym.make\n:attr:metadata - The metadata of the environment, i.e. render modes\n:attr:np_random - The random number generator for the environment\n\nNote: a default reward range set to :math:(-\\infty,+\\infty) already exists. Set it if you want a narrower range.*\n\nsource\n\n\nMicroGridEnv0Plus\n\n MicroGridEnv0Plus (**kwargs)\n\n*The main OpenAI Gym class.\nIt encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.\nThe main API methods that users of this class need to know are:\n\n:meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.\n:meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.\n:meth:render - Renders the environment observation with modes depending on the output\n:meth:close - Closes the environment, important for rendering where pygame is imported\n\nAnd set the following attributes:\n\n:attr:action_space - The Space object corresponding to valid actions\n:attr:observation_space - The Space object corresponding to valid observations\n:attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards\n:attr:spec - An environment spec that contains the information used to initialise the environment from gym.make\n:attr:metadata - The metadata of the environment, i.e. render modes\n:attr:np_random - The random number generator for the environment\n\nNote: a default reward range set to :math:(-\\infty,+\\infty) already exists. Set it if you want a narrower range.*", + "crumbs": [ + "MicroGrid" + ] + }, + { + "objectID": "environment_processing.html", + "href": "environment_processing.html", + "title": "Environment processing", + "section": "", + "text": "source\n\n\n\n wind_turbine_results (environment_properties=None, experiment=None,\n root=None, wt='WindTurbine', verbose=None,\n early=None, min=None, comparisons=False,\n comparisons_print_plots=False, property_dir=None,\n property_file=None, plots=None,\n log_testing_to_experiment=False)", + "crumbs": [ + "Environment processing" + ] + }, + { + "objectID": "environment_processing.html#wind-turbine-results", + "href": "environment_processing.html#wind-turbine-results", + "title": "Environment processing", + "section": "", + "text": "source\n\n\n\n wind_turbine_results (environment_properties=None, experiment=None,\n root=None, wt='WindTurbine', verbose=None,\n early=None, min=None, comparisons=False,\n comparisons_print_plots=False, property_dir=None,\n property_file=None, plots=None,\n log_testing_to_experiment=False)", + "crumbs": [ + "Environment processing" + ] + }, + { + "objectID": "environment_processing.html#environmentprocessingfactory", + "href": "environment_processing.html#environmentprocessingfactory", + "title": "Environment processing", + "section": "EnvironmentProcessingFactory", + "text": "EnvironmentProcessingFactory\n\nsource\n\nEnvironmentProcessingFactory\n\n EnvironmentProcessingFactory ()\n\nInitialize self. See help(type(self)) for accurate signature.", + "crumbs": [ + "Environment processing" + ] + }, + { + "objectID": "environment_processing.html#baseenvironmentprocessing", + "href": "environment_processing.html#baseenvironmentprocessing", + "title": "Environment processing", + "section": "BaseEnvironmentProcessing", + "text": "BaseEnvironmentProcessing\n\nsource\n\nBaseEnvironmentProcessing\n\n BaseEnvironmentProcessing ()\n\nBase class of environment processing.", + "crumbs": [ + "Environment processing" + ] + }, + { + "objectID": "environment_processing.html#windturbineenvironmentprocessing", + "href": "environment_processing.html#windturbineenvironmentprocessing", + "title": "Environment processing", + "section": "WindTurbineEnvironmentProcessing", + "text": "WindTurbineEnvironmentProcessing\n\nsource\n\nWindTurbineEnvironmentProcessing\n\n WindTurbineEnvironmentProcessing ()\n\nWindTurbine environment processing.\n\nsource\n\n\nDummyEnvironmentProcessing\n\n DummyEnvironmentProcessing ()\n\nDummy environment processing.", + "crumbs": [ + "Environment processing" + ] + }, + { + "objectID": "environment_processing.html#arcenvironmentprocessing", + "href": "environment_processing.html#arcenvironmentprocessing", + "title": "Environment processing", + "section": "ARCEnvironmentProcessing", + "text": "ARCEnvironmentProcessing\n\nsource\n\nARCEnvironmentProcessing\n\n ARCEnvironmentProcessing ()\n\nARC environment processing.", + "crumbs": [ + "Environment processing" + ] + }, + { + "objectID": "environment_processing.html#arc-test", + "href": "environment_processing.html#arc-test", + "title": "Environment processing", + "section": "ARC Test", + "text": "ARC Test\n\nenv_name = 'ARC'\nargs={'file': 'ARC0701-FitnessError-CurrentError-Mode00', 'seed':1, 'drive':'G:\\\\My Drive\\\\', 'max': False, 'verbosed': {'display_env': True, 'hpct_verbose': False}}\nenv_proc = EnvironmentProcessingFactory.createEnvironmentProcessing(f'{env_name}EnvironmentProcessing')\nenv_proc.set_properties(args=args)\nws=env_proc.get_workspace()\nname = env_proc.get_experiment_name()\nprint(ws, name)\n\narc-challenge 0701-01\n\n\n\n#env_proc.results(filepath='G:\\\\My Drive\\\\data\\\\ga\\\\ARC\\\\FitnessError-MovingSumError-Mode07\\\\ga-000.000-s001-1x1-m007-ARC0009-1e1867dd3cfb6967b085ac003458aa46.properties')\n# env_proc.results(filepath='testfiles\\\\data\\\\ga\\\\ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties')", + "crumbs": [ + "Environment processing" + ] + }, + { + "objectID": "webots.html", + "href": "webots.html", + "title": "Webots", + "section": "", + "text": "source\n\nWebotsHelper\n\n WebotsHelper (name=None, mode=1)\n\nInitialize self. See help(type(self)) for accurate signature.", + "crumbs": [ + "Webots" + ] + }, + { + "objectID": "hierarchy.html", + "href": "hierarchy.html", + "title": "Hierarchy", + "section": "", + "text": "source", + "crumbs": [ + "Hierarchy" + ] + }, + { + "objectID": "hierarchy.html#defining-the-hierarchy", + "href": "hierarchy.html#defining-the-hierarchy", + "title": "Hierarchy", + "section": "Defining the Hierarchy", + "text": "Defining the Hierarchy\nDefining the PCTHierarchy\n\nsource\n\nPCTHierarchy\n\n PCTHierarchy (levels=0, cols=0, pre=None, post=None, name='pcthierarchy',\n clear_names=True, links='single', history=False,\n build=True, error_collector=None, namespace=None, **pargs)\n\nA hierarchical perceptual control system, of PCTNodes.\n\n# history=True\n# hierarchy, env = PCTHierarchy.load_from_file('testfiles/ARC/ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties', min=True, render=True, history=history)\n# hierarchy.summary()\n\n# score, dfig, pfigs = PCTHierarchy.run_and_draw_hierarchy(hierarchy, env, draw_file=True, draw_figsize=(5,5), history = history, plots=\"scEdges,scZero\", steps=50)#, draw_file='/tmp/tmp.png')\n# print('Test score =',score)\n# dfig\n\n\n# for pfig in pfigs:\n# display(pfig)", + "crumbs": [ + "Hierarchy" + ] + }, + { + "objectID": "hierarchy.html#creating-a-hierarchy", + "href": "hierarchy.html#creating-a-hierarchy", + "title": "Hierarchy", + "section": "Creating a Hierarchy", + "text": "Creating a Hierarchy\nCreate a hierarchy by defining the number of rows (levels) and columns.\n\nfrom pct.functions import Constant\n\n\npre=Constant(5, name='precon')\nnamespace=pre.namespace\npost=Constant(10, name='postcon', namespace=namespace)\nhpct = PCTHierarchy(3,3, pre=[pre], post=[post], history=True, clear_names=False, links=\"dense\", namespace=namespace)\nhpct.hierarchy\n\n[[<pct.nodes.PCTNode>,\n <pct.nodes.PCTNode>,\n <pct.nodes.PCTNode>],\n [<pct.nodes.PCTNode>,\n <pct.nodes.PCTNode>,\n <pct.nodes.PCTNode>],\n [<pct.nodes.PCTNode>,\n <pct.nodes.PCTNode>,\n <pct.nodes.PCTNode>]]\n\n\n\nprint(hpct.get_summary())\n\n**************************\nPRE: 5.000 \nL0C0 0.000 0.000 0.000 0.000 \nL0C1 0.000 0.000 0.000 0.000 \nL0C2 0.000 0.000 0.000 0.000 \nL1C0 0.000 0.000 0.000 0.000 \nL1C1 0.000 0.000 0.000 0.000 \nL1C2 0.000 0.000 0.000 0.000 \nL2C0 0.000 0.000 0.000 0.000 \nL2C1 0.000 0.000 0.000 0.000 \nL2C2 0.000 0.000 0.000 0.000 \nPOST: 10.000 \n\n\n\n\nprint(hpct.get_parameters_list())\n\n[[[[5]], [[10]]], [[[[1, 1, 1]], [[0]], [[1]]], [[[1, 1, 1]], [[0]], [[1]]], [[[1, 1, 1]], [[0]], [[1]]]], [[[[1, 1, 1]], [[1, 1, 1]], [[1]]], [[[1, 1, 1]], [[1, 1, 1]], [[1]]], [[[1, 1, 1]], [[1, 1, 1]], [[1]]]], [[[[0]], [[1, 1, 1]], [[1]]], [[[0]], [[1, 1, 1]], [[1]]], [[[0]], [[1, 1, 1]], [[1]]]]]\n\n\n\nprint(hpct.get_grid())\n\n[3, 3, 3]\n\n\n\nhpct.change_namespace()\n\n\nhpct.summary()\n\n**************************\npcthierarchy PCTHierarchy [3, 3, 3] b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n--------------------------\nPRE: precon Constant | 5 \nLevel 0 Cols 3\nlevel0col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum WeightedSum | weights [1, 1, 1] | 0 | links proportional3 proportional4 proportional5 \nPER: variable Variable | 0 \nCOM: subtract Subtract | 0 | links weighted_sum variable \nOUT: proportional Proportional | gain 1 | 0 | links subtract \n----------------------------\nlevel0col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum1 WeightedSum | weights [1, 1, 1] | 0 | links proportional3 proportional4 proportional5 \nPER: variable1 Variable | 0 \nCOM: subtract1 Subtract | 0 | links weighted_sum1 variable1 \nOUT: proportional1 Proportional | gain 1 | 0 | links subtract1 \n----------------------------\nlevel0col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum2 WeightedSum | weights [1, 1, 1] | 0 | links proportional3 proportional4 proportional5 \nPER: variable2 Variable | 0 \nCOM: subtract2 Subtract | 0 | links weighted_sum2 variable2 \nOUT: proportional2 Proportional | gain 1 | 0 | links subtract2 \n----------------------------\nLevel 1 Cols 3\nlevel1col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum4 WeightedSum | weights [1, 1, 1] | 0 | links proportional6 proportional7 proportional8 \nPER: weighted_sum3 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract3 Subtract | 0 | links weighted_sum4 weighted_sum3 \nOUT: proportional3 Proportional | gain 1 | 0 | links subtract3 \n----------------------------\nlevel1col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum6 WeightedSum | weights [1, 1, 1] | 0 | links proportional6 proportional7 proportional8 \nPER: weighted_sum5 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract4 Subtract | 0 | links weighted_sum6 weighted_sum5 \nOUT: proportional4 Proportional | gain 1 | 0 | links subtract4 \n----------------------------\nlevel1col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum8 WeightedSum | weights [1, 1, 1] | 0 | links proportional6 proportional7 proportional8 \nPER: weighted_sum7 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract5 Subtract | 0 | links weighted_sum8 weighted_sum7 \nOUT: proportional5 Proportional | gain 1 | 0 | links subtract5 \n----------------------------\nLevel 2 Cols 3\nlevel2col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: constant Constant | 0 \nPER: weighted_sum9 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract6 Subtract | 0 | links constant weighted_sum9 \nOUT: proportional6 Proportional | gain 1 | 0 | links subtract6 \n----------------------------\nlevel2col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: constant1 Constant | 0 \nPER: weighted_sum10 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract7 Subtract | 0 | links constant1 weighted_sum10 \nOUT: proportional7 Proportional | gain 1 | 0 | links subtract7 \n----------------------------\nlevel2col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: constant2 Constant | 0 \nPER: weighted_sum11 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract8 Subtract | 0 | links constant2 weighted_sum11 \nOUT: proportional8 Proportional | gain 1 | 0 | links subtract8 \n----------------------------\nPOST: postcon Constant | 10 \n**************************\n\n\n\n#FunctionsList.getInstance().report()\n\nCreate a hierarchy from a configuration.\n\nconfig = hpct.get_config()\nprint(config)\n\n{'type': 'PCTHierarchy', 'name': 'pcthierarchy', 'pre': {'pre0': {'type': 'Constant', 'name': 'precon', 'value': 5, 'links': {}}}, 'levels': {'level0': {'level': 0, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'level0col0', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 0, 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'weighted_sum', 1: 'variable'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {0: 'subtract'}, 'gain': 1}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'level0col1', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum1', 'value': 0, 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable1', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract1', 'value': 0, 'links': {0: 'weighted_sum1', 1: 'variable1'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional1', 'value': 0, 'links': {0: 'subtract1'}, 'gain': 1}}}}, 'col2': {'col': 2, 'node': {'type': 'PCTNode', 'name': 'level0col2', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum2', 'value': 0, 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable2', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract2', 'value': 0, 'links': {0: 'weighted_sum2', 1: 'variable2'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional2', 'value': 0, 'links': {0: 'subtract2'}, 'gain': 1}}}}}}, 'level1': {'level': 1, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'level1col0', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum4', 'value': 0, 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum3', 'value': 0, 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract3', 'value': 0, 'links': {0: 'weighted_sum4', 1: 'weighted_sum3'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional3', 'value': 0, 'links': {0: 'subtract3'}, 'gain': 1}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'level1col1', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum6', 'value': 0, 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum5', 'value': 0, 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract4', 'value': 0, 'links': {0: 'weighted_sum6', 1: 'weighted_sum5'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional4', 'value': 0, 'links': {0: 'subtract4'}, 'gain': 1}}}}, 'col2': {'col': 2, 'node': {'type': 'PCTNode', 'name': 'level1col2', 'refcoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum8', 'value': 0, 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'}, 'weights': [1, 1, 1]}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum7', 'value': 0, 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract5', 'value': 0, 'links': {0: 'weighted_sum8', 1: 'weighted_sum7'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional5', 'value': 0, 'links': {0: 'subtract5'}, 'gain': 1}}}}}}, 'level2': {'level': 2, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'level2col0', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum9', 'value': 0, 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract6', 'value': 0, 'links': {0: 'constant', 1: 'weighted_sum9'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional6', 'value': 0, 'links': {0: 'subtract6'}, 'gain': 1}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'level2col1', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant1', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum10', 'value': 0, 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract7', 'value': 0, 'links': {0: 'constant1', 1: 'weighted_sum10'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional7', 'value': 0, 'links': {0: 'subtract7'}, 'gain': 1}}}}, 'col2': {'col': 2, 'node': {'type': 'PCTNode', 'name': 'level2col2', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant2', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'weighted_sum11', 'value': 0, 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'}, 'weights': [1, 1, 1]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract8', 'value': 0, 'links': {0: 'constant2', 1: 'weighted_sum11'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional8', 'value': 0, 'links': {0: 'subtract8'}, 'gain': 1}}}}}}}, 'post': {'post0': {'type': 'Constant', 'name': 'postcon', 'value': 10, 'links': {}}}}\n\n\n\n# h = PCTHierarchy.from_config(config, namespace=namespace)\nh = PCTHierarchy.from_config(config)\n\n\nassert h.get_config() == hpct.get_config()", + "crumbs": [ + "Hierarchy" + ] + }, + { + "objectID": "hierarchy.html#viewing-a-hierarchy", + "href": "hierarchy.html#viewing-a-hierarchy", + "title": "Hierarchy", + "section": "Viewing a Hierarchy", + "text": "Viewing a Hierarchy\nThe hierarchy details can be viewed as a summary.\n\nhpct.get_node(2,0).get_function('reference').set_value(1)\nhpct.get_node(2,1).get_function('reference').set_value(1)\nhpct.get_node(2,2).get_function('reference').set_value(1)\nfor level in range(3):\n for col in range(3):\n hpct.get_node(level,col).get_function('output').set_property('gain', 10)\nhpct.summary()\n\n**************************\npcthierarchy PCTHierarchy [3, 3, 3] b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n--------------------------\nPRE: precon Constant | 5 \nLevel 0 Cols 3\nlevel0col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum WeightedSum | weights [1, 1, 1] | 0 | links proportional3 proportional4 proportional5 \nPER: variable Variable | 0 \nCOM: subtract Subtract | 0 | links weighted_sum variable \nOUT: proportional Proportional | gain 10 | 0 | links subtract \n----------------------------\nlevel0col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum1 WeightedSum | weights [1, 1, 1] | 0 | links proportional3 proportional4 proportional5 \nPER: variable1 Variable | 0 \nCOM: subtract1 Subtract | 0 | links weighted_sum1 variable1 \nOUT: proportional1 Proportional | gain 10 | 0 | links subtract1 \n----------------------------\nlevel0col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum2 WeightedSum | weights [1, 1, 1] | 0 | links proportional3 proportional4 proportional5 \nPER: variable2 Variable | 0 \nCOM: subtract2 Subtract | 0 | links weighted_sum2 variable2 \nOUT: proportional2 Proportional | gain 10 | 0 | links subtract2 \n----------------------------\nLevel 1 Cols 3\nlevel1col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum4 WeightedSum | weights [1, 1, 1] | 0 | links proportional6 proportional7 proportional8 \nPER: weighted_sum3 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract3 Subtract | 0 | links weighted_sum4 weighted_sum3 \nOUT: proportional3 Proportional | gain 10 | 0 | links subtract3 \n----------------------------\nlevel1col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum6 WeightedSum | weights [1, 1, 1] | 0 | links proportional6 proportional7 proportional8 \nPER: weighted_sum5 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract4 Subtract | 0 | links weighted_sum6 weighted_sum5 \nOUT: proportional4 Proportional | gain 10 | 0 | links subtract4 \n----------------------------\nlevel1col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: weighted_sum8 WeightedSum | weights [1, 1, 1] | 0 | links proportional6 proportional7 proportional8 \nPER: weighted_sum7 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract5 Subtract | 0 | links weighted_sum8 weighted_sum7 \nOUT: proportional5 Proportional | gain 10 | 0 | links subtract5 \n----------------------------\nLevel 2 Cols 3\nlevel2col0 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: constant Constant | 1 \nPER: weighted_sum9 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract6 Subtract | 0 | links constant weighted_sum9 \nOUT: proportional6 Proportional | gain 10 | 0 | links subtract6 \n----------------------------\nlevel2col1 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: constant1 Constant | 1 \nPER: weighted_sum10 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract7 Subtract | 0 | links constant1 weighted_sum10 \nOUT: proportional7 Proportional | gain 10 | 0 | links subtract7 \n----------------------------\nlevel2col2 PCTNode b2cde580-5ef7-11ef-97cf-8cf8c5b8669b\n----------------------------\nREF: constant2 Constant | 1 \nPER: weighted_sum11 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract8 Subtract | 0 | links constant2 weighted_sum11 \nOUT: proportional8 Proportional | gain 10 | 0 | links subtract8 \n----------------------------\nPOST: postcon Constant | 10 \n**************************\n\n\nThe hierarchy details can be viewed as a configuration. That configuration can be used to create a hierarchy, as shown above.\n\nhpct.get_config()\n\n{'type': 'PCTHierarchy',\n 'name': 'pcthierarchy',\n 'pre': {'pre0': {'type': 'Constant',\n 'name': 'precon',\n 'value': 5,\n 'links': {}}},\n 'levels': {'level0': {'level': 0,\n 'nodes': {'col0': {'col': 0,\n 'node': {'type': 'PCTNode',\n 'name': 'level0col0',\n 'refcoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum',\n 'value': 0,\n 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'},\n 'weights': [1, 1, 1]}},\n 'percoll': {'0': {'type': 'Variable',\n 'name': 'variable',\n 'value': 0,\n 'links': {}}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract',\n 'value': 0,\n 'links': {0: 'weighted_sum', 1: 'variable'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional',\n 'value': 0,\n 'links': {0: 'subtract'},\n 'gain': 10}}}},\n 'col1': {'col': 1,\n 'node': {'type': 'PCTNode',\n 'name': 'level0col1',\n 'refcoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum1',\n 'value': 0,\n 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'},\n 'weights': [1, 1, 1]}},\n 'percoll': {'0': {'type': 'Variable',\n 'name': 'variable1',\n 'value': 0,\n 'links': {}}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract1',\n 'value': 0,\n 'links': {0: 'weighted_sum1', 1: 'variable1'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional1',\n 'value': 0,\n 'links': {0: 'subtract1'},\n 'gain': 10}}}},\n 'col2': {'col': 2,\n 'node': {'type': 'PCTNode',\n 'name': 'level0col2',\n 'refcoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum2',\n 'value': 0,\n 'links': {0: 'proportional3', 1: 'proportional4', 2: 'proportional5'},\n 'weights': [1, 1, 1]}},\n 'percoll': {'0': {'type': 'Variable',\n 'name': 'variable2',\n 'value': 0,\n 'links': {}}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract2',\n 'value': 0,\n 'links': {0: 'weighted_sum2', 1: 'variable2'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional2',\n 'value': 0,\n 'links': {0: 'subtract2'},\n 'gain': 10}}}}}},\n 'level1': {'level': 1,\n 'nodes': {'col0': {'col': 0,\n 'node': {'type': 'PCTNode',\n 'name': 'level1col0',\n 'refcoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum4',\n 'value': 0,\n 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'},\n 'weights': [1, 1, 1]}},\n 'percoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum3',\n 'value': 0,\n 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'},\n 'weights': [1, 1, 1]}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract3',\n 'value': 0,\n 'links': {0: 'weighted_sum4', 1: 'weighted_sum3'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional3',\n 'value': 0,\n 'links': {0: 'subtract3'},\n 'gain': 10}}}},\n 'col1': {'col': 1,\n 'node': {'type': 'PCTNode',\n 'name': 'level1col1',\n 'refcoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum6',\n 'value': 0,\n 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'},\n 'weights': [1, 1, 1]}},\n 'percoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum5',\n 'value': 0,\n 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'},\n 'weights': [1, 1, 1]}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract4',\n 'value': 0,\n 'links': {0: 'weighted_sum6', 1: 'weighted_sum5'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional4',\n 'value': 0,\n 'links': {0: 'subtract4'},\n 'gain': 10}}}},\n 'col2': {'col': 2,\n 'node': {'type': 'PCTNode',\n 'name': 'level1col2',\n 'refcoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum8',\n 'value': 0,\n 'links': {0: 'proportional6', 1: 'proportional7', 2: 'proportional8'},\n 'weights': [1, 1, 1]}},\n 'percoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum7',\n 'value': 0,\n 'links': {0: 'variable', 1: 'variable1', 2: 'variable2'},\n 'weights': [1, 1, 1]}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract5',\n 'value': 0,\n 'links': {0: 'weighted_sum8', 1: 'weighted_sum7'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional5',\n 'value': 0,\n 'links': {0: 'subtract5'},\n 'gain': 10}}}}}},\n 'level2': {'level': 2,\n 'nodes': {'col0': {'col': 0,\n 'node': {'type': 'PCTNode',\n 'name': 'level2col0',\n 'refcoll': {'0': {'type': 'Constant',\n 'name': 'constant',\n 'value': 1,\n 'links': {}}},\n 'percoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum9',\n 'value': 0,\n 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'},\n 'weights': [1, 1, 1]}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract6',\n 'value': 0,\n 'links': {0: 'constant', 1: 'weighted_sum9'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional6',\n 'value': 0,\n 'links': {0: 'subtract6'},\n 'gain': 10}}}},\n 'col1': {'col': 1,\n 'node': {'type': 'PCTNode',\n 'name': 'level2col1',\n 'refcoll': {'0': {'type': 'Constant',\n 'name': 'constant1',\n 'value': 1,\n 'links': {}}},\n 'percoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum10',\n 'value': 0,\n 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'},\n 'weights': [1, 1, 1]}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract7',\n 'value': 0,\n 'links': {0: 'constant1', 1: 'weighted_sum10'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional7',\n 'value': 0,\n 'links': {0: 'subtract7'},\n 'gain': 10}}}},\n 'col2': {'col': 2,\n 'node': {'type': 'PCTNode',\n 'name': 'level2col2',\n 'refcoll': {'0': {'type': 'Constant',\n 'name': 'constant2',\n 'value': 1,\n 'links': {}}},\n 'percoll': {'0': {'type': 'WeightedSum',\n 'name': 'weighted_sum11',\n 'value': 0,\n 'links': {0: 'weighted_sum3', 1: 'weighted_sum5', 2: 'weighted_sum7'},\n 'weights': [1, 1, 1]}},\n 'comcoll': {'0': {'type': 'Subtract',\n 'name': 'subtract8',\n 'value': 0,\n 'links': {0: 'constant2', 1: 'weighted_sum11'}}},\n 'outcoll': {'0': {'type': 'Proportional',\n 'name': 'proportional8',\n 'value': 0,\n 'links': {0: 'subtract8'},\n 'gain': 10}}}}}}},\n 'post': {'post0': {'type': 'Constant',\n 'name': 'postcon',\n 'value': 10,\n 'links': {}}}}\n\n\nGet the output function, which will be the output function of the last node, or the last item of the post-processor functions, if present.\n\nlink = hpct.get_output_function()\nprint(link.get_config())\n\n{'type': 'Constant', 'name': 'postcon', 'value': 10, 'links': {}}\n\n\nThe hierarhcy can also be viewed graphically as a network of connected nodes.\n\nimport os\n\n\nahpct = PCTHierarchy(2,2, links=\"dense\")\n\ntest = 3\nif test==1:\n g = ahpct.graph()\n pos=graphviz_layout(g, prog='dot')\n nx.draw(g, pos=pos, with_labels=True, font_size=12, font_weight='bold', node_color='red', node_size=500)\n\nif test ==2:\n g = ahpct.graph()\n pos = nx.multipartite_layout(g, subset_key=\"layer\", align='horizontal')\n pos['constant1'][0]+=0.2\n c = pos['constant1'][0]\n print(c)\n nx.draw(g, pos=pos, with_labels=True, font_weight='bold', node_color='red', node_size=750, arrowsize=25)\n\nif test ==3:\n if os.name=='nt': \n ahpct.draw(file=\"ahpct.png\", node_size=1500, figsize=(10,10))# with_labels=True, font_weight='bold', node_color='red', node_size=500, arrowsize=25, align='vertical'", + "crumbs": [ + "Hierarchy" + ] + }, + { + "objectID": "hierarchy.html#running-a-hierarchy", + "href": "hierarchy.html#running-a-hierarchy", + "title": "Hierarchy", + "section": "Running a hierarchy", + "text": "Running a hierarchy\nThe hierachy can be run once by calling itself. The verbose flag will print the computations to the screen.\n\nhpct(verbose=True)\n\n5.000 \nlevel0col0 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 0.000 \nlevel0col1 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 0.000 \nlevel0col2 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 0.000 \nlevel1col0 [0, [0, 0, 0], [1, 1, 1]] 0.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 \nlevel1col1 [0, [0, 0, 0], [1, 1, 1]] 0.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 \nlevel1col2 [0, [0, 0, 0], [1, 1, 1]] 0.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 0.000 0.000 \nlevel2col0 1.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 1.000 10.000 \nlevel2col1 1.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 1.000 10.000 \nlevel2col2 1.000 [0, [0, 0, 0], [1, 1, 1]] 0.000 1.000 10.000 \n10.000 \n\n\n10\n\n\nA hierarchy can be executed with the “run()” method, providing the number of iterations to run.\n\nhpct1 = PCTHierarchy(3,3, pre=[pre], post=[post], history=True, links=\"dense\")\nnamespace=hpct1.namespace\nhpct1.get_node(2,0).get_function('reference').set_value(1)\nhpct1.get_node(2,1).get_function('reference').set_value(1)\nhpct1.get_node(2,2).get_function('reference').set_value(1)\nfor level in range(3):\n for col in range(3):\n hpct1.get_node(level,col).get_function('output').set_property('gain', 10)\n\nhpct1.run(10)\n\n10", + "crumbs": [ + "Hierarchy" + ] + }, + { + "objectID": "hierarchy.html#viewing-data", + "href": "hierarchy.html#viewing-data", + "title": "Hierarchy", + "section": "Viewing Data", + "text": "Viewing Data\nIf the hierarchy is created with the “history” flag equal to True, the data can be retrieved for each node. The node is accessed by specifying the row and column within the hierarchy.\n\nprint(hpct1.get_node(1,1).history.data)\nassert hpct1.get_node(1,1).history.data == {'refcoll': {'weighted_sum6': [0.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0]}, 'percoll': {'weighted_sum5': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, 'comcoll': {'subtract4': [0.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0, 30.0]}, 'outcoll': {'proportional4': [0.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0]}}\n\n{'refcoll': {'weighted_sum6': [0, 30, 30, 30, 30, 30, 30, 30, 30, 30]}, 'percoll': {'weighted_sum5': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'comcoll': {'subtract4': [0, 30, 30, 30, 30, 30, 30, 30, 30, 30]}, 'outcoll': {'proportional4': [0, 300, 300, 300, 300, 300, 300, 300, 300, 300]}}", + "crumbs": [ + "Hierarchy" + ] + }, + { + "objectID": "hierarchy.html#save-and-load", + "href": "hierarchy.html#save-and-load", + "title": "Hierarchy", + "section": "Save and Load", + "text": "Save and Load\nSave a hierarchy to file.\n\nimport json\n\n\nhpct1.save(\"hpct.json\")\n\nCreate a hierarchy from file.\n\n#loaded = PCTHierarchy.load(\"hpct.json\", clear=False, namespace=namespace)\nloaded = PCTHierarchy.load(\"hpct.json\", clear=False)\nloaded.summary()\n\n**************************\npcthierarchy PCTHierarchy [3, 3, 3] b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n--------------------------\nPRE: precon Constant | 5 \nLevel 0 Cols 3\nlevel0col0 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: weighted_sum WeightedSum | weights [1, 1, 1] | 900 | links proportional3 proportional4 proportional5 \nPER: variable Variable | 0 \nCOM: subtract Subtract | 900 | links weighted_sum variable \nOUT: proportional Proportional | gain 10 | 9000 | links subtract \n----------------------------\nlevel0col1 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: weighted_sum1 WeightedSum | weights [1, 1, 1] | 900 | links proportional3 proportional4 proportional5 \nPER: variable1 Variable | 0 \nCOM: subtract1 Subtract | 900 | links weighted_sum1 variable1 \nOUT: proportional1 Proportional | gain 10 | 9000 | links subtract1 \n----------------------------\nlevel0col2 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: weighted_sum2 WeightedSum | weights [1, 1, 1] | 900 | links proportional3 proportional4 proportional5 \nPER: variable2 Variable | 0 \nCOM: subtract2 Subtract | 900 | links weighted_sum2 variable2 \nOUT: proportional2 Proportional | gain 10 | 9000 | links subtract2 \n----------------------------\nLevel 1 Cols 3\nlevel1col0 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: weighted_sum4 WeightedSum | weights [1, 1, 1] | 30 | links proportional6 proportional7 proportional8 \nPER: weighted_sum3 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract3 Subtract | 30 | links weighted_sum4 weighted_sum3 \nOUT: proportional3 Proportional | gain 10 | 300 | links subtract3 \n----------------------------\nlevel1col1 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: weighted_sum6 WeightedSum | weights [1, 1, 1] | 30 | links proportional6 proportional7 proportional8 \nPER: weighted_sum5 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract4 Subtract | 30 | links weighted_sum6 weighted_sum5 \nOUT: proportional4 Proportional | gain 10 | 300 | links subtract4 \n----------------------------\nlevel1col2 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: weighted_sum8 WeightedSum | weights [1, 1, 1] | 30 | links proportional6 proportional7 proportional8 \nPER: weighted_sum7 WeightedSum | weights [1, 1, 1] | 0 | links variable variable1 variable2 \nCOM: subtract5 Subtract | 30 | links weighted_sum8 weighted_sum7 \nOUT: proportional5 Proportional | gain 10 | 300 | links subtract5 \n----------------------------\nLevel 2 Cols 3\nlevel2col0 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: constant Constant | 1 \nPER: weighted_sum9 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract6 Subtract | 1 | links constant weighted_sum9 \nOUT: proportional6 Proportional | gain 10 | 10 | links subtract6 \n----------------------------\nlevel2col1 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: constant1 Constant | 1 \nPER: weighted_sum10 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract7 Subtract | 1 | links constant1 weighted_sum10 \nOUT: proportional7 Proportional | gain 10 | 10 | links subtract7 \n----------------------------\nlevel2col2 PCTNode b3984310-5ef7-11ef-86dc-8cf8c5b8669b\n----------------------------\nREF: constant2 Constant | 1 \nPER: weighted_sum11 WeightedSum | weights [1, 1, 1] | 0 | links weighted_sum3 weighted_sum5 weighted_sum7 \nCOM: subtract8 Subtract | 1 | links constant2 weighted_sum11 \nOUT: proportional8 Proportional | gain 10 | 10 | links subtract8 \n----------------------------\nPOST: postcon Constant | 10 \n**************************\n\n\n\nimport networkx as nx\nimport matplotlib.pyplot as plt\n\n\n# https://matplotlib.org/3.1.0/gallery/color/named_colors.html\nloaded.draw(with_edge_labels=True, color_mapping={'w':'aqua','c':'limegreen','s':'goldenrod', 'p':'red', 'v':'silver'})\n\n\n\n\n\n\n\n\n\nExamples\nBuild a hierarchy by adding nodes and functions manually.\nCreate an empty hierarchy.\n\nmyhpct = PCTHierarchy()\nnamespace=myhpct.namespace\nmyhpct.summary(build=False)\n\n**************************\npcthierarchy PCTHierarchy [] b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n--------------------------\nPRE: None\nPOST: None\n**************************\n\n\nAdd a node. Then nodes at particular positions.\n\nmyhpct.add_node(PCTNode(namespace=namespace))\nmyhpct.add_node(PCTNode(namespace=namespace), level=1)\nmyhpct.add_node(PCTNode(namespace=namespace), level=0)\nmyhpct.summary(build=False)\n\n**************************\npcthierarchy PCTHierarchy [2, 1] b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n--------------------------\nPRE: None\nLevel 0 Cols 2\npctnode2 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n----------------------------\nREF: constant2 Constant | 0 \nPER: variable2 Variable | 0 \nCOM: subtract2 Subtract | 0 \nOUT: proportional2 Proportional | gain 1 | 0 \n----------------------------\npctnode PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n----------------------------\nREF: constant Constant | 0 \nPER: variable Variable | 0 \nCOM: subtract Subtract | 0 \nOUT: proportional Proportional | gain 1 | 0 \n----------------------------\nLevel 1 Cols 1\npctnode1 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n----------------------------\nREF: constant1 Constant | 0 \nPER: variable1 Variable | 0 \nCOM: subtract1 Subtract | 0 \nOUT: proportional1 Proportional | gain 1 | 0 \n----------------------------\nPOST: None\n**************************\n\n\nReplace functions at particular positions in the hierarchy.\n\nmyhpct.insert_function(level=0, col=0, collection=\"perception\", function=Proportional(3, name=\"prop2\", namespace=namespace))\nmyhpct.insert_function(level=1, col=0, collection=\"perception\", function=WeightedSum(weights=[1,1], name=\"wsum\", namespace=namespace))\nmyhpct.insert_function(level=0, col=1, collection=\"reference\", function=Proportional(1, name=\"passthru\", namespace=namespace))\n\nAdd pre and post processor functions.\n\nmyhpct.add_preprocessor(Constant(1, name=\"cons1\", namespace=namespace))\nmyhpct.add_preprocessor(Proportional(5, name=\"prop1\", namespace=namespace))\nmyhpct.add_postprocessor(Proportional(5, name=\"postprop1\", namespace=namespace))\nmyhpct.add_postprocessor(Proportional(5, name=\"postprop2\", namespace=namespace))\n\nLink the functions together.\n\nmyhpct.set_links(\"prop1\", \"cons1\")\nmyhpct.set_links(\"prop2\", \"prop1\")\nmyhpct.add_links(\"wsum\", \"prop2\", \"variable\")\nmyhpct.set_links(\"passthru\", \"proportional1\")\nmyhpct.set_links(\"postprop1\", \"proportional\")\nmyhpct.set_links(\"postprop2\", \"postprop1\")\n\n\nmyhpct.get_node(0,0).get_function('reference').set_value(1)\nmyhpct.get_node(1,0).get_function('reference').set_value(1)\nmyhpct.get_node(0,0).get_function('output').set_property('gain', 10)\nmyhpct.get_node(0,1).get_function('output').set_property('gain', 10)\nmyhpct.get_node(1,0).get_function('output').set_property('gain', 10)\nmyhpct.summary(build=True)\n\n**************************\npcthierarchy PCTHierarchy [2, 1] b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n--------------------------\nPRE: cons1 Constant | 1 \nprop1 Proportional | gain 5 | 0 | links cons1 \nLevel 0 Cols 2\npctnode2 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n----------------------------\nREF: constant2 Constant | 1 \nPER: prop2 Proportional | gain 3 | 0 | links prop1 \nCOM: subtract2 Subtract | 0 | links constant2 prop2 \nOUT: proportional2 Proportional | gain 10 | 0 | links subtract2 \n----------------------------\npctnode PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n----------------------------\nREF: passthru Proportional | gain 1 | 0 | links proportional1 \nPER: variable Variable | 0 \nCOM: subtract Subtract | 0 | links passthru variable \nOUT: proportional Proportional | gain 10 | 0 | links subtract \n----------------------------\nLevel 1 Cols 1\npctnode1 PCTNode b3fdb145-5ef7-11ef-acb5-8cf8c5b8669b\n----------------------------\nREF: constant1 Constant | 1 \nPER: wsum WeightedSum | weights [1, 1] | 0 | links prop2 variable \nCOM: subtract1 Subtract | 0 | links constant1 wsum \nOUT: proportional1 Proportional | gain 10 | 0 | links subtract1 \n----------------------------\nPOST: postprop1 Proportional | gain 5 | 0 | links proportional \npostprop2 Proportional | gain 5 | 0 | links postprop1 \n**************************\n\n\n\nmyhpctconfig = myhpct.get_config()\n#print(myhpctconfig)\nassert myhpctconfig == {'type': 'PCTHierarchy', 'name': 'pcthierarchy', 'pre': {'pre0': {'type': 'Constant', 'name': 'cons1', 'value': 1, 'links': {}}, 'pre1': {'type': 'Proportional', 'name': 'prop1', 'value': 0, 'links': {0: 'cons1'}, 'gain': 5}}, 'levels': {'level0': {'level': 0, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'pctnode2', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant2', 'value': 1, 'links': {}}}, 'percoll': {'0': {'type': 'Proportional', 'name': 'prop2', 'value': 0, 'links': {0: 'prop1'}, 'gain': 3}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract2', 'value': 0, 'links': {0: 'constant2', 1: 'prop2'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional2', 'value': 0, 'links': {0: 'subtract2'}, 'gain': 10}}}}, 'col1': {'col': 1, 'node': {'type': 'PCTNode', 'name': 'pctnode', 'refcoll': {'0': {'type': 'Proportional', 'name': 'passthru', 'value': 0, 'links': {0: 'proportional1'}, 'gain': 1}}, 'percoll': {'0': {'type': 'Variable', 'name': 'variable', 'value': 0, 'links': {}}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'passthru', 1: 'variable'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {0: 'subtract'}, 'gain': 10}}}}}}, 'level1': {'level': 1, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'pctnode1', 'refcoll': {'0': {'type': 'Constant', 'name': 'constant1', 'value': 1, 'links': {}}}, 'percoll': {'0': {'type': 'WeightedSum', 'name': 'wsum', 'value': 0, 'links': {0: 'prop2', 1: 'variable'}, 'weights': [1.0, 1.0]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'subtract1', 'value': 0, 'links': {0: 'constant1', 1: 'wsum'}}}, 'outcoll': {'0': {'type': 'Proportional', 'name': 'proportional1', 'value': 0, 'links': {0: 'subtract1'}, 'gain': 10}}}}}}}, 'post': {'post0': {'type': 'Proportional', 'name': 'postprop1', 'value': 0, 'links': {0: 'proportional'}, 'gain': 5}, 'post1': {'type': 'Proportional', 'name': 'postprop2', 'value': 0, 'links': {0: 'postprop1'}, 'gain': 5}}}\n\nDefine the order in which the node will be processed.\n\nmyhpct.set_order([\"pctnode2\", \"pctnode1\", \"pctnode\"])\n\nRun the hierarchy once.\n\nout = myhpct(verbose=True)\nprint(out)\nassert out == -35000\n\n1.000 5.000 \npctnode2 1.000 15.000 -14.000 -140.000 \npctnode1 1.000 [15, [15, 0], [1, 1]] 15.000 -14.000 -140.000 \npctnode -140.000 0.000 -140.000 -1400.000 \n-7000.000 -35000.000 \n-35000\n\n\n\n# config = {'type': 'Individual', 'name': 'pcthierarchy', 'pre': {'pre0': {'type': 'CartPoleV1', 'name': 'CartPoleV1', 'value': [0.03498833197860944, 0.20994561633454428, 0.012668159509212712, -0.2705237130920193, 0.047656152654718356], 'links': {0: 'Action1'}, 'env_name': 'CartPole-v1', 'reward': 1.0, 'done': False, 'info': {}}, 'pre1': {'type': 'IndexedParameter', 'name': 'ICV', 'value': 0.20994561633454428, 'links': {0: 'CartPoleV1'}, 'index': 1}, 'pre2': {'type': 'IndexedParameter', 'name': 'ICP', 'value': 0.03498833197860944, 'links': {0: 'CartPoleV1'}, 'index': 0}, 'pre3': {'type': 'IndexedParameter', 'name': 'IPV', 'value': -0.2705237130920193, 'links': {0: 'CartPoleV1'}, 'index': 3}, 'pre4': {'type': 'IndexedParameter', 'name': 'IPA', 'value': 0.012668159509212712, 'links': {0: 'CartPoleV1'}, 'index': 2}}, 'levels': {'level0': {'level': 0, 'nodes': {'col0': {'col': 0, 'node': {'type': 'PCTNode', 'name': 'L0C0', 'refcoll': {'0': {'type': 'EAConstant', 'name': 'RL0C0', 'value': 0, 'links': {}}}, 'percoll': {'0': {'type': 'EAWeightedSum', 'name': 'PL0C0', 'value': -0.2705237130920193, 'links': {0: 'ICV', 1: 'ICP', 2: 'IPV', 3: 'IPA'}, 'weights': [0, 0, 1, 0]}}, 'comcoll': {'0': {'type': 'Subtract', 'name': 'CL0C0', 'value': 0.2705237130920193, 'links': {0: 'RL0C0', 1: 'PL0C0'}}}, 'outcoll': {'0': {'type': 'EAProportional', 'name': 'OL0C0', 'value': -0.05046166000036782, 'links': {0: 'CL0C0'}, 'gain': -0.1865332226280776}}}}}}}, 'post': {'post0': {'type': 'EAWeightedSum', 'name': 'Action1', 'value': -0.005282911840894066, 'links': {0: 'OL0C0'}, 'weights': [0.10469159835121472]}}}\n# ind = PCTHierarchy.from_config(config)\n\n\nfrom pct.errors import RootSumSquaredError, TotalError\n\ner = RootSumSquaredError()\nte = TotalError(error_response=er, limit=250,min=True) \nte.add_error_data([1, 2])\nprint(te)\n\n\nhpct = PCTHierarchy(1,1,error_collector=te)\nhpct.run(steps=5, verbose=True)\n\n\nerr=te.error()\nprint(err)\n\nTotalError limit:250, limit_exceeded:False, : RootSumSquaredError error_response:2.23606797749979\n[0] \nlevel0col0 0.000 0.000 0.000 0.000 \n\nCurrent score=2.23606797749979\n[1] \nlevel0col0 0.000 0.000 0.000 0.000 \n\nCurrent score=2.23606797749979\n[2] \nlevel0col0 0.000 0.000 0.000 0.000 \n\nCurrent score=2.23606797749979\n[3] \nlevel0col0 0.000 0.000 0.000 0.000 \n\nCurrent score=2.23606797749979\n[4] \nlevel0col0 0.000 0.000 0.000 0.000 \n\nCurrent score=2.23606797749979\n2.23606797749979", + "crumbs": [ + "Hierarchy" + ] + }, + { + "objectID": "yaw_module.html", + "href": "yaw_module.html", + "title": "Yaw Module", + "section": "", + "text": "source\n\nget_yaw_count\n\n get_yaw_count (nacelle_position_diff)\n\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nnacelle_position_diff\nPandas series of nacelle position increment\n\n\n\nReturns\nnumber of yaw actuations\n\n\n\n\n\nsource\n\n\nget_time_yawing\n\n get_time_yawing (nacelle_position_diff)\n\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nnacelle_position_diff\nPandas series of nacelle position increment\n\n\n\nReturns\ntime spent yawing in percent\n\n\n\n\n\nsource\n\n\noriented_angle\n\n oriented_angle (angle)\n\n\n\n\n\nType\nDetails\n\n\n\n\nangle\n\n\n\n\nReturns\noriented angle in range [-180,179]\n\n\n\n\n\nsource\n\n\nget_dataset_from_simu\n\n get_dataset_from_simu (path='dataset.csv', cycle_period=10,\n rolling_average_duration=20)\n\nreturns output dataset obtained of CYCA-S\n\nsource\n\n\nget_properties\n\n get_properties (properties)\n\n\nsource\n\n\nget_indexes\n\n get_indexes (model_params, properties)\n\n\nsource\n\n\ntest_trad_control\n\n test_trad_control (wind_timeseries, wind_timeseries_not_agg, agg, start,\n end, experiment=None, datatype='baseline_simu',\n outdir=None)\n\ntest CYCA-S and CYCA-L\n\nsource\n\n\nYawEnv\n\n YawEnv ()\n\n*The main OpenAI Gym class.\nIt encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.\nThe main API methods that users of this class need to know are:\n\n:meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.\n:meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.\n:meth:render - Renders the environment observation with modes depending on the output\n:meth:close - Closes the environment, important for rendering where pygame is imported\n\nAnd set the following attributes:\n\n:attr:action_space - The Space object corresponding to valid actions\n:attr:observation_space - The Space object corresponding to valid observations\n:attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards\n:attr:spec - An environment spec that contains the information used to initialise the environment from gym.make\n:attr:metadata - The metadata of the environment, i.e. render modes\n:attr:np_random - The random number generator for the environment\n\nNote: a default reward range set to :math:(-\\infty,+\\infty) already exists. Set it if you want a narrower range.*\n\nsource\n\n\nget_comparaison_metrics\n\n get_comparaison_metrics (wind_direction, power_control, power_simu,\n res_model, res_baseline_simu, yaw_rate,\n yaw_power, width_bin)\n\n\nsource\n\n\ntest_model_wind\n\n test_model_wind (wind_timeseries, start_index, stop_index, ancestors,\n filter_duration, yaw_parameters, experiment=None,\n datatype='test')\n\ntest RLYCA\n\nsource\n\n\ntest_hpct_wind\n\n test_hpct_wind (file=None, plots=None, history=None, verbose=None,\n outdir=None, early=None, environment_properties=None,\n start_index=None, stop_index=None, experiment=None,\n datatype='test', draw_file=None, model_file=None,\n log_testing_to_experiment=False,\n log_experiment_figure=False, min=None)\n\ntest RLYCA", + "crumbs": [ + "Yaw Module" + ] + }, + { + "objectID": "index.html", + "href": "index.html", + "title": "Perceptual Control Theory", + "section": "", + "text": "With this library you can create and run simple or complex hierarchies of perceptual control systems as well as make use of the power of the Python platform and its rich set of packages.\nIn the context of this library a single control system comprising a perceptual, reference, comparator and output function is called a Node. The functions therein can be configured by the user.\nA hierarchy is defined by a collection of nodes.", + "crumbs": [ + "Perceptual Control Theory" + ] + }, + { + "objectID": "index.html#install", + "href": "index.html#install", + "title": "Perceptual Control Theory", + "section": "Install", + "text": "Install\npip install pct", + "crumbs": [ + "Perceptual Control Theory" + ] + }, + { + "objectID": "index.html#import", + "href": "index.html#import", + "title": "Perceptual Control Theory", + "section": "Import", + "text": "Import\nExamples of importing the library functionality.\nimport pct as p\nfrom pct.hierarchy import Hierarchy\nfrom pct import *", + "crumbs": [ + "Perceptual Control Theory" + ] + }, + { + "objectID": "index.html#how-to-use", + "href": "index.html#how-to-use", + "title": "Perceptual Control Theory", + "section": "How to use", + "text": "How to use\nImport modules from the PCT library.\n\nfrom pct.nodes import PCTNode\n\nFor the purposes of this example define a world model. This would not be required if the real world is used, or a simulation such as OpenAI Gym.\n\ndef velocity_model(velocity, force , mass):\n velocity = velocity + force / mass\n return velocity\n\n# World value\nmass = 50\n\nCreate a PCTNode, a control system unit comprising a reference, perception, comparator and output function. The default value for the reference is 1. With the history flag set, the data for each iteration is recorded for later plotting.\n\npctnode = PCTNode(history=True)\n\nCall the node repeatedly to control the perception of velocity. With the verbose flag set, the control values are printed. In this case the printed values are the iteration number, the (velocity) reference, the perception, the error and the (force) output.\n\nfor i in range(40):\n print(i, end=\" \")\n force = pctnode(verbose=True)\n velocity = velocity_model(pctnode.get_perception_value(), force, mass)\n pctnode.set_perception_value(velocity)\n\n0 0.000 0.000 0.000 0.000 \n1 0.000 0.000 0.000 0.000 \n2 0.000 0.000 0.000 0.000 \n3 0.000 0.000 0.000 0.000 \n4 0.000 0.000 0.000 0.000 \n5 0.000 0.000 0.000 0.000 \n6 0.000 0.000 0.000 0.000 \n7 0.000 0.000 0.000 0.000 \n8 0.000 0.000 0.000 0.000 \n9 0.000 0.000 0.000 0.000 \n10 0.000 0.000 0.000 0.000 \n11 0.000 0.000 0.000 0.000 \n12 0.000 0.000 0.000 0.000 \n13 0.000 0.000 0.000 0.000 \n14 0.000 0.000 0.000 0.000 \n15 0.000 0.000 0.000 0.000 \n16 0.000 0.000 0.000 0.000 \n17 0.000 0.000 0.000 0.000 \n18 0.000 0.000 0.000 0.000 \n19 0.000 0.000 0.000 0.000 \n20 0.000 0.000 0.000 0.000 \n21 0.000 0.000 0.000 0.000 \n22 0.000 0.000 0.000 0.000 \n23 0.000 0.000 0.000 0.000 \n24 0.000 0.000 0.000 0.000 \n25 0.000 0.000 0.000 0.000 \n26 0.000 0.000 0.000 0.000 \n27 0.000 0.000 0.000 0.000 \n28 0.000 0.000 0.000 0.000 \n29 0.000 0.000 0.000 0.000 \n30 0.000 0.000 0.000 0.000 \n31 0.000 0.000 0.000 0.000 \n32 0.000 0.000 0.000 0.000 \n33 0.000 0.000 0.000 0.000 \n34 0.000 0.000 0.000 0.000 \n35 0.000 0.000 0.000 0.000 \n36 0.000 0.000 0.000 0.000 \n37 0.000 0.000 0.000 0.000 \n38 0.000 0.000 0.000 0.000 \n39 0.000 0.000 0.000 0.000 \n\n\nUsing the plotly library plot the data. The graph shows the perception being controlled to match the reference value.\nimport plotly.graph_objects as go\nfig = go.Figure(layout_title_text=\"Velocity Goal\")\nfig.add_trace(go.Scatter(y=pctnode.history.data['refcoll']['constant'], name=\"ref\"))\nfig.add_trace(go.Scatter(y=pctnode.history.data['percoll']['variable'], name=\"perc\"))\nThis following code is only for the purposes of displaying image of the graph generated by the above code.\n\nfrom IPython.display import Image\n\n\nImage(url='http://www.perceptualrobots.com/wp-content/uploads/2020/08/pct_node_plot.png')\n\n\n\n\nThis shows a very basic example of the use of the PCT library. For more advanced functionality see the API documentation at https://perceptualrobots.github.io/pct/.", + "crumbs": [ + "Perceptual Control Theory" + ] + }, + { + "objectID": "errors.html", + "href": "errors.html", + "title": "Errors", + "section": "", + "text": "source\n\n\n\n BaseErrorType (flip_error_response=False)\n\nBase class of a type error response. This class is not used direclty by developers, but defines the interface common to all.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#baseerrortype", + "href": "errors.html#baseerrortype", + "title": "Errors", + "section": "", + "text": "source\n\n\n\n BaseErrorType (flip_error_response=False)\n\nBase class of a type error response. This class is not used direclty by developers, but defines the interface common to all.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#rootsumsquarederror", + "href": "errors.html#rootsumsquarederror", + "title": "Errors", + "section": "RootSumSquaredError", + "text": "RootSumSquaredError\n\nsource\n\nRootSumSquaredError\n\n RootSumSquaredError (flip_error_response=False)\n\nThe square root of the sum of the square of the errors.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#rootmeansquareerror", + "href": "errors.html#rootmeansquareerror", + "title": "Errors", + "section": "RootMeanSquareError", + "text": "RootMeanSquareError\n\nsource\n\nRootMeanSquareError\n\n RootMeanSquareError (flip_error_response=False)\n\nThe square root of the mean of the sum of the square of the errors.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#summederror", + "href": "errors.html#summederror", + "title": "Errors", + "section": "SummedError", + "text": "SummedError\n\nsource\n\nSummedError\n\n SummedError (flip_error_response=False)\n\nSum of all errors.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#summederror-2", + "href": "errors.html#summederror-2", + "title": "Errors", + "section": "SummedError", + "text": "SummedError\n\nsource\n\nCurrentError\n\n CurrentError (flip_error_response=False)\n\nThe current error, rather than a function of the historical values.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#currenterror-1", + "href": "errors.html#currenterror-1", + "title": "Errors", + "section": "CurrentError", + "text": "CurrentError\n\nsource\n\nSmoothError\n\n SmoothError (flip_error_response=False)\n\nThe exponential smoothed value of the error.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#movingsumerror", + "href": "errors.html#movingsumerror", + "title": "Errors", + "section": "MovingSumError", + "text": "MovingSumError\n\nsource\n\nMovingSumError\n\n MovingSumError (flip_error_response=False)\n\nThe moving sum of the error.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#movingaverageerror", + "href": "errors.html#movingaverageerror", + "title": "Errors", + "section": "MovingAverageError", + "text": "MovingAverageError\n\nsource\n\nMovingAverageError\n\n MovingAverageError (flip_error_response=False)\n\nThe moving average of the error.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#baseerrorcollector", + "href": "errors.html#baseerrorcollector", + "title": "Errors", + "section": "BaseErrorCollector", + "text": "BaseErrorCollector\n\nsource\n\nBaseErrorCollector\n\n BaseErrorCollector (limit, error_response, min=True)\n\nBase class of an error collector. This class is not used direclty by developers, but defines the interface common to all.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#totalerror", + "href": "errors.html#totalerror", + "title": "Errors", + "section": "TotalError", + "text": "TotalError\n\nsource\n\nTotalError\n\n TotalError (limit=None, error_response=None, min=None, **cargs)\n\nA class to collect all the errors of the control system run.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#toperror", + "href": "errors.html#toperror", + "title": "Errors", + "section": "TopError", + "text": "TopError\n\nsource\n\nTopError\n\n TopError (limit=None, error_response=None, min=None, **cargs)\n\nA class to collect all the errors of the top-level nodes.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#inputserror", + "href": "errors.html#inputserror", + "title": "Errors", + "section": "InputsError", + "text": "InputsError\n\nsource\n\nInputsError\n\n InputsError (limit=None, error_response=None, min=None, **cargs)\n\nA class to collect the values of the input values.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#referencedinputserror", + "href": "errors.html#referencedinputserror", + "title": "Errors", + "section": "ReferencedInputsError", + "text": "ReferencedInputsError\n\nsource\n\nReferencedInputsError\n\n ReferencedInputsError (limit=None, error_response=None, min=None,\n **cargs)\n\nA class to collect the values of the input values subtracted from reference values.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#rewarderror", + "href": "errors.html#rewarderror", + "title": "Errors", + "section": "RewardError", + "text": "RewardError\n\nsource\n\nRewardError\n\n RewardError (limit=None, error_response=None, min=None, **cargs)\n\nA class that collects the reward value of the control system run.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#fitnesserror", + "href": "errors.html#fitnesserror", + "title": "Errors", + "section": "FitnessError", + "text": "FitnessError\n\nsource\n\nFitnessError\n\n FitnessError (limit=None, error_response=None, min=None, **cargs)\n\nA class that collects the fitness value of the control system run.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#errorresponsefactory", + "href": "errors.html#errorresponsefactory", + "title": "Errors", + "section": "ErrorResponseFactory", + "text": "ErrorResponseFactory\n\nsource\n\nErrorResponseFactory\n\n ErrorResponseFactory ()\n\nInitialize self. See help(type(self)) for accurate signature.", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "errors.html#errorcollectorfactory", + "href": "errors.html#errorcollectorfactory", + "title": "Errors", + "section": "ErrorCollectorFactory", + "text": "ErrorCollectorFactory\n\nsource\n\nErrorCollectorFactory\n\n ErrorCollectorFactory ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\nrms = RootMeanSquareError()\nfor i in range(10):\n rms(i)\ner = rms.get_error_response()\nprint(er)\nassert er == 5.338539126015656\n\n5.338539126015656\n\n\n\ner = RootSumSquaredError()\nte = TotalError(error_response=er, limit=250,min=True) \nte.add_error_data([1, 2])\nprint(te)\n\nTotalError limit:250, limit_exceeded:False, : RootSumSquaredError error_response:2.23606797749979\n\n\n\n# hpct = PCTHierarchy(1,1,error_collector=te)\n# hpct.run(steps=5, verbose=True)\n\n\nerr=te.error()\nprint(err)\n\n2.23606797749979\n\n\n\net = ErrorResponseFactory.createErrorResponse('RootSumSquaredError') \net(102)\nprint(et.get_error_response())\n\nec = ErrorCollectorFactory.createErrorCollector('TotalError') \nec.set_limit(100)\nec.set_error_response(et)\nprint(ec.error())\n\n102.0\n102.0\n\n\n\nec = BaseErrorCollector.collector( 'RootMeanSquareError','InputsError', 10, flip_error_response=True, min=False)\n\n\nec.add_error_data([1])\nprint(ec.error())\nprint(ec)\n\n-1.0\nInputsError limit:10, limit_exceeded:False, : RootMeanSquareError error_response:-1.0\n\n\n\nec.reset()\n\n\nprint(ec)\n\nInputsError limit:10, limit_exceeded:False, : RootMeanSquareError error_response:None", + "crumbs": [ + "Errors" + ] + }, + { + "objectID": "putils.html", + "href": "putils.html", + "title": "Utilities", + "section": "", + "text": "SingletonObjects\n\nsource\n\nSingletonObjects\n\n SingletonObjects ()\n\nA utility for refrencing objects that should only be declared once.\n\n\n\nUniqueNamer\n\nsource\n\nUniqueNamer\n\n UniqueNamer ()\n\nA utility for ensuring the names of functions are unique.\n\n\n\nFunctionsList\n\nsource\n\nFunctionsList\n\n FunctionsList ()\n\nA utility for storing functions created, keyed on the function name.\n\n\n\nMemory\n\nsource\n\nMemory\n\n Memory ()\n\nA utility for recording global values.\n\n\n\nNumberStats\n\nsource\n\nNumberStats\n\n NumberStats ()\n\nA utility for calculating the statistice of a number.\n\nfor num in range(10):\n NumberStats.getInstance().add(num)\n NumberStats.getInstance().add(-num)\n\nNumberStats.getInstance().report()\n\n--- stats report\nMax: 9.000\nMin: -9.000\n\n\n\nfrom pct.functions import Proportional\n\n\nprop = Proportional()\n\n\nUniqueNamer.getInstance().report()\n\n\nFunctionsList.getInstance().report()\n\n--- functions report\n\n\n\nsource\n\n\ndynamic_module_import\n\n dynamic_module_import (modulename, package=None)\n\n\nsource\n\n\ndynamic_class_load\n\n dynamic_class_load (modulename, classname)\n\n\n#import importlib\n#importlib.import_module('pct.functions', 'Constant')\n\n\nsource\n\n\nget_drive\n\n get_drive ()\n\n\nsource\n\n\nloadjson\n\n loadjson (file)\n\n\nvar = loadjson(\"ws.json\")\nprint(var)\n\n{'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 35, 'links': {'0': 'constant', '1': 'constant1', '2': 'constant2'}, 'weights': [1, 1, 1]}\n\n\n\n\n\nCounter\n\nsource\n\nCounter\n\n Counter (limit=1000, init=0, step=1, print=100, pause=False, display=10)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nstringIntListToListOfInts\n\n stringIntListToListOfInts (strList, delimiter)\n\n\nsource\n\n\nstringFloatListToListOfFloats\n\n stringFloatListToListOfFloats (strList, delimiter)\n\n\nsource\n\n\nstringListToListOfStrings\n\n stringListToListOfStrings (strList, delimiter=',')\n\n\nsource\n\n\nlistNumsToString\n\n listNumsToString (list)\n\n\nsource\n\n\nround_lists\n\n round_lists (alist, formatted, places)\n\n\nsource\n\n\nfloatListsToString\n\n floatListsToString (alist, places)\n\n\nsource\n\n\nlimit_large_float\n\n limit_large_float (val, limit=10000000)\n\n\nsource\n\n\nsigmoid\n\n sigmoid (x, range, slope)\n\n\nsource\n\n\nsmooth\n\n smooth (new_val, old_val, smooth_factor)\n\n\nsource\n\n\nsigmoid_array\n\n sigmoid_array (x, range, slope)\n\n\nsource\n\n\ndot\n\n dot (inputs, weights)\n\n\nsource\n\n\nlist_of_ones\n\n list_of_ones (num)\n\n\nsource\n\n\nlimit_to_range\n\n limit_to_range (num, lower, upper)\n\n\nprint(list_of_ones(3))\n\n[1, 1, 1]\n\n\n\nsource\n\n\nwrap_env\n\n wrap_env (env)\n\n\nsource\n\n\nshow_video\n\n show_video ()\n\n\nimport matplotlib.pyplot as plt\n\n\nx = 2 #np.linspace(-5, 5, 11)\n#x = -10000001\nrange=2\nscale=2\ny = sigmoid(x, range, scale)\nprint(y)\n# plt.plot(x, y)\n# plt.grid()\n# plt.xlim(-6, 6)\n# plt.xlabel('x')\n# plt.title('expit(x)')\n# plt.show()\n\n0.7615941559557646\n\n\n\nsource\n\n\nis_in_notebooks\n\n is_in_notebooks ()\n\n\nsource\n\n\nprinttime\n\n printtime (msg)\n\n\nsource\n\n\nclip_value\n\n clip_value (val, range)\n\n\n\n\nget_abs_tol\n\nsource\n\nget_abs_tol\n\n get_abs_tol (key)\n\n\n\n\nget_rel_tol\n\nsource\n\nget_rel_tol\n\n get_rel_tol (key)\n\n\nsource\n\n\nmap_to_int_even_range\n\n map_to_int_even_range (val=None, inrange=None, outrange=None)\n\n\nsource\n\n\nmap_to_int_odd_range\n\n map_to_int_odd_range (val=None, inrange=None, outrange=None)\n\n\nlimits = [-2, 2]\nmapped = [1, 5]\nvals = [-3.1, -2.1, -1.51, -1.5, -1.4, -0.9,-0.5, -0.1, 0, 0.1, 0.6, 1.1, 2.1, 210.1 ]\nfor val in vals:\n print(val, map_to_int_odd_range(val, limits, mapped))\n\n-3.1 1\n-2.1 1\n-1.51 1\n-1.5 1\n-1.4 2\n-0.9 2\n-0.5 3\n-0.1 3\n0 3\n0.1 3\n0.6 4\n1.1 4\n2.1 5\n210.1 5\n\n\n\n#vals = [0.6]\n\nvals = [-3.1, -2.1, -1.51, -1.5, -1.4, -0.9, -0.5, -0.1, 0, 0.1, 0.6, 1.1, 2.1, 210.1 ]\nlimits = [-2, 2]\nmapped = [1, 4]\nfor val in vals:\n print(val, map_to_int_even_range(val, limits, mapped))\n\n-3.1 1\n-2.1 1\n-1.51 1\n-1.5 1\n-1.4 1\n-0.9 2\n-0.5 2\n-0.1 2\n0 3\n0.1 3\n0.6 3\n1.1 4\n2.1 4\n210.1 4\n\n\n\nsource\n\n\nTimer\n\n Timer ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nTimerError\nA custom exception used to report errors in use of Timer class\n\ntimer = Timer()\ntimer.start()\ntime.sleep(1)\ntimer.stop()\ntimer.start()\ntime.sleep(1)\ntimer.stop()\n\nprint(timer.mean())\nprint(timer.total())\nprint(timer.count())\n\n1.0082400500014046\n2.016480100002809\n2\n\n\n\n\n\nPCTRunProperties\n\nsource\n\nPCTRunProperties\n\n PCTRunProperties ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\nproperty_file = 'ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties'\nproperty_dir = ''\nprint(property_dir, property_file)\nep = PCTRunProperties.get_environment_properties(root='testfiles', env='ARC', property_dir=property_dir, property_file=property_file)\nprint(ep)\n\n ga-000.000-s001-1x1-m007-ARC0010-9ddcf52416e60d65f19007957d07262d-consolidated.properties\n({'code': '007bbfb7', 'index': 0, 'dataset': 'train', 'control_set': ['dims'], 'input_set': ['env'], 'history': 5, 'initial': 100}, 'ARC')\n\n\n\nsource\n\n\nget_ram_mb\n\n get_ram_mb ()", + "crumbs": [ + "Utilities" + ] + }, + { + "objectID": "environments.html", + "href": "environments.html", + "title": "Environments", + "section": "", + "text": "source\n\nEnvironmentFactory\n\n EnvironmentFactory ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nControlEnvironment\n\n ControlEnvironment (name=None, value=None, links=None, new_name=True,\n namespace=None)\n\nAbstract ControlEnvironment\n\nsource\n\n\nOpenAIGym\n\n OpenAIGym (env_name=None, render=False, render_mode='rgb_array',\n video_wrap=False, value=0, name='gym', seed=None, links=None,\n new_name=True, early_termination=False, namespace=None,\n **cargs)\n\nA function that creates and runs an environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.\n\nsource\n\n\nCartPoleV1\n\n CartPoleV1 (render=False, render_mode='rgb_array', video_wrap=False,\n value=0, name='CartPoleV1', seed=None, links=None,\n new_name=True, namespace=None, **cargs)\n\nA function that creates an runs the CartPole-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.\n\nsource\n\n\nCartPoleDV1\n\n CartPoleDV1 (render=False, render_mode='rgb_array', video_wrap=False,\n value=0, name='CartPoleD-v1', seed=None, links=None,\n new_name=True, namespace=None, **cargs)\n\nA function that creates an runs the CartPole-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.\n\nsource\n\n\nPendulum\n\n Pendulum (render=False, render_mode='rgb_array', video_wrap=False,\n value=0, name='Pendulum', seed=None, links=None, new_name=True,\n namespace=None, **cargs)\n\nA function that creates an runs the Pendulum-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.\n\nclass Pendulum_1(OpenAIGym):\n \"A function that creates an runs the Pendulum-v1 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.\"\n # from obs[0], indices\n # 0 cos(theta) - +1 is up, -1 is down, 0 is left and right\n # 1 sin(theta) - +1 is left, -1 is right, 0 is up and down\n # 2 theta dot - +dot is anti-clockwise, -dot is clockwise\n # 3 theta dot - normalised to +/- 1 \n # 4 theta +1/-1 (added here) 1 is pointing upwards, + is anti-clockwise, - is clockwise\n # reward - -(theta^2 + 0.1*theta_dt^2 + 0.001*action^2)\n\n def __init__(self, render=False, render_mode=\"rgb_array\", video_wrap=False, value=0, name=\"Pendulum_1\", \n seed=None, links=None, new_name=True, namespace=None,**cargs): \n super().__init__('Pendulum-v1', render=render, render_mode=render_mode, video_wrap=video_wrap, value=value, name=name, seed=seed, \n links=links, new_name=new_name, namespace=namespace, **cargs)\n \n def process_hierarchy_values(self):\n self.hierarchy_values = self.links[0].get_value()\n \n def process_actions(self):\n pass\n \n def apply_actions_get_obs(self):\n return self.env.step([self.hierarchy_values])\n \n def parse_obs(self): \n self.value = self.obs[0]\n self.reward = -self.obs[1]\n self.done = self.obs[2]\n self.info = self.obs[3]\n\n def process_values(self):\n vel = self.obs[0][2]/8.0\n self.value = np.append(self.value, vel)\n x = math.copysign(math.acos(self.obs[0][0]), self.obs[0][1])/math.pi\n #theta = 100 - (10 * math.copysign(1-abs(x), x))\n theta = 100 - (10 * x)\n self.value = np.append(self.value, theta)\n \n class Factory:\n def create(self, seed=None): return Pendulum_1(seed=seed)\n class FactoryWithNamespace:\n def create(self, namespace=None, seed=None): return Pendulum_1(namespace=namespace, seed=seed)\n\n\nsource\n\n\nMountainCarV0\n\n MountainCarV0 (render=False, render_mode='rgb_array', video_wrap=False,\n value=0, name='MountainCarV0', seed=None, links=None,\n new_name=True, namespace=None, **cargs)\n\nA function that creates and runs the MountainCar-v0 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.\n\nsource\n\n\nMountainCarContinuousV0\n\n MountainCarContinuousV0 (render=False, render_mode='rgb_array',\n video_wrap=False, value=0,\n name='MountainCarContinuousV0', seed=None,\n links=None, new_name=True,\n early_termination=True, namespace=None, **cargs)\n\nA function that creates and runs the MountainCarContinuous-v0 environment from OpenAI Gym. Parameter: The environment name. Flag to display environment. Links: Link to the action function.\n\nsource\n\n\nWindTurbine\n\n WindTurbine (value=0, name='WindTurbine', links=None, new_name=True,\n namespace=None, seed=None, **cargs)\n\nA function that creates and runs the YawEnv environment for a wind turbine. Indexes 0 - action, 1 - yaw error, 2 - wind direction, 3 - wind speed (ignore 0).\n\nsource\n\n\nVelocityModel\n\n VelocityModel (mass=50, value=0, name='VelocityModel', links=None,\n num_links=1, new_name=True, indexes=0, namespace=None,\n **cargs)\n\nA simple model of a moving object of a particular mass. Parameters: The environment name, mass. Links: Link to the action function.\n\nsource\n\n\nDummyModel\n\n DummyModel (name='World', value=0, links=None, new_name=True,\n namespace=None, seed=None, **cargs)\n\nBase class of a PCT function. This class is not used directly by developers, but defines the functionality common to all.\n\nsource\n\n\nWebotsWrestler\n\n WebotsWrestler (render=False, value=0, name='WebotsWrestler', seed=None,\n links=None, new_name=True, early_termination=True,\n namespace=None)\n\nA function that creates and runs a Webots Wrestler robot.\n\nsource\n\n\nWebotsWrestlerSupervisor\n\n WebotsWrestlerSupervisor (render=False, value=0,\n name='WebotsWrestlerSupervisor', seed=None,\n links=None, new_name=True,\n early_termination=True, namespace=None)\n\nA function that creates and runs a Webots Wrestler robot.\n\nsource\n\n\nBridge\n\n Bridge (render=False, value=0, name='Bridge', seed=None, links=None,\n new_name=True, early_termination=True, namespace=None)\n\nAn environment function with sensors set by external system.\n\nsource\n\n\nMicroGrid\n\n MicroGrid (value=0, name='MicroGrid', links=None, new_name=True,\n namespace=None, seed=None, **cargs)\n\nA function that creates and runs the microgrid environment for an energy management system. ‘Deep reinforcement learning for energy management in a microgrid with flexible demand.’ Taha Abdelhalim Nakabi, Pekka Toivanen. https://doi.org/10.1016/j.segan.2020.100413 Inputs - st = [SoCt, BSCt, Cbt, Tt, Gt, Put, Lb,t, t]. 0 - ISC - the average SoC (state-of-charge) of the TCLs, 1 - IL - the current load value of the daily consumption pattern. 2 - IPC - the pricing counter, 3 - IBS - the battery SoC, 4 - IEG - the energy generation, 5 - IT - the temparature, 6 - IEP - the electricty prices, 7 - ITS - the time step, Actions: 0 - TCL action, Atcl, 1 - price action, Ap, 2 - energy deficiency action, Ad, 3 - energy excess action, Ae \n\nenv = MicroGrid(seed=1)\nenv.summary()\n\nMicroGrid MicroGrid | 0 \n\n\n\n\nARC\n\nsource\n\n\nARC\n\n ARC (value:float=0, name:str='ARC', links:Optional[List]=None,\n new_name:bool=True, render:bool=False, seed:int=None,\n namespace:Optional[str]=None, **cargs:dict)\n\nA function that creates and runs an ARC environment from a file given the rask code.\n\nenv = ARC()\nenv.add_link(Constant(1))\n# env.add_link(Constant(0))\nproperties = { 'dir': 'C:\\\\packages\\\\arc-prize-2024', 'file_prefix':'arc-agi_training_', 'code':'007bbfb7', 'dataset': 'train', 'control_set': ['dims'], 'input_set': ['env']}\nfile_name = os.path.join(properties['dir'], properties['file_prefix']) + 'challenges.json' \nchallenges_manager = ChallengesDataManager(file_name)\ndata = challenges_manager.get_data_for_key(properties['code'])\nproperties['data']=data\n\nenv.set_properties(properties)\nenv.set_render(True)\nenv.reset()\nprint(env.env.info)\nfor i in range(6):\n state = env()\n env.summary() \n # print()\nprint(env.get_config())\nprint()\nprint(env.output_string()) \nprint()\nprint(state)\n\n# env.close()\n\n{'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\nARC ARC | [4] | links constant \nARC ARC | [5] | links constant \nARC ARC | [6] | links constant \nARC ARC | [7] | links constant \nARC ARC | [8] | links constant \nARC ARC | [9] | links constant \n{'type': 'ARC', 'name': 'ARC', 'value': [9], 'links': {0: 'constant'}, 'env_name': 'ARC'}\n\n1.000 \n9.000 0 True {'num_actions': 1, 'grid_shape': 'equal', 'dims': 1}\n\n[9]\n\n\n\nenv.close()\n\n\n\nOpenAI Gym\nAn example showing how to use an OpenAI Gym function. And how to have another function which accesses one of the values of the gym environment.\n\nfrom pct.functions import Constant\nfrom pct.functions import IndexedParameter\nfrom pct.putils import FunctionsList\nfrom pct.functions import Proportional\n\n\nrender=False \nprint(render)\nacrobot = OpenAIGym(\"Acrobot-v1\", render=render, seed=1)\nnamespace=acrobot.namespace\nacrobot.add_link(Constant(1, namespace=namespace))\n#acrobot.get_config()\n\nFalse\n\n\n\n#acrobot()\n#print(acrobot.reward)\n#print(getattr(acrobot, \"reward\"))\n\n\nacrobot.output_string()\n\n'0.000'\n\n\n\n#acrobot.value[0]\n\nThe IndexedParameter type retrieves a value from a linked function based upon an index.\n\ncos_angle1 = IndexedParameter(0, name=\"cos_angle1\", namespace=namespace)\ncos_angle1.add_link(acrobot)\nprint(cos_angle1.get_config())\n#cos_angle1()\n\n{'type': 'IndexedParameter', 'name': 'cos_angle1', 'value': 0, 'links': {0: 'gym'}, 'index': 0}\n\n\n\nacrobot.close()\n\n\npen = Pendulum(render=True, namespace=namespace, seed=1)\npen.add_link(Constant([1], namespace=namespace))\nprint(pen.get_config())\n#pen.run(steps=10, verbose=True)\n# why TypeError: size must be two numbers?\n\n{'type': 'Pendulum', 'name': 'Pendulum', 'value': 0, 'links': {0: 'constant1'}, 'env_name': 'Pendulum-v1', 'reward': 0, 'done': False, 'info': {}}\n\n\n\npen.close()\n\n\n\nVelocity Model\n\nvm = VelocityModel(name='VelocityModel', namespace=namespace)\nvm.add_link(Constant(1, name='mycon'))\nprint(vm.summary())\nconfig = vm.get_config()\nprint(config)\nassert config == {'type': 'VelocityModel', 'name': 'VelocityModel', 'value': 0, 'links': {0: 'mycon'}, 'mass': 50}\nvm.run(steps=10, verbose=True)\n\nVelocityModel VelocityModel | 0 | links mycon \nNone\n{'type': 'VelocityModel', 'name': 'VelocityModel', 'value': 0, 'links': {0: 'mycon'}, 'mass': 50}\n0.020 0.040 0.060 0.080 0.100 0.120 0.140 0.160 0.180 0.200 \n\n\n0.19999999999999998", + "crumbs": [ + "Environments" + ] + }, + { + "objectID": "plotting.html", + "href": "plotting.html", + "title": "Plotting", + "section": "", + "text": "source\n\nSubPlotter\n\n SubPlotter (width, height, title, plotsconfig=[['title', 'xlabel',\n 'ylabel', 1, 0, 111, ['line1']]], linewidth=2,\n legend_fontsize=8)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nrun_hpct_animation\n\n run_hpct_animation (hpct, counter=None, plotter=None, interval=1,\n verbose=False)\n\n\nwindow = 20\nplotter = SubPlotter(12, 4, \"MyData\", [[\"Data0\", \"time\", \"y\", 2, window, 121, ['line1','line2']], \n [\"Data1\", \"time\", \"y\", 2, window, 122, ['line1','line2']]])\n\nfor x in range(10):\n y11 = random()-0.5\n y12 = random()-0.5\n plotter.add_data(0, x, [y11, y12])\n y21 = random()-0.5\n y22 = random()-0.5 \n plotter.add_data(1, x, [y21, y22])\n \nplotter.draw()\n\n\n\n\n\n\n\n\n\nwindow = 20\nplotter = SubPlotter(12, 8, \"MyData\", [[\"Data0\", \"time\", \"y\", 2, window, 211, ['line1','line2']], \n [\"Data1\", \"time\", \"y\", 2, window, 212, ['line1','line2']]])\n\nfor x in range(10):\n y11 = random()-0.5\n y12 = random()-0.5\n plotter.add_data(0, x, [y11, y12])\n y21 = random()-0.5\n y22 = random()-0.5 \n plotter.add_data(1, x, [y21, y22])\n \nplotter.draw()\n\n\n\n\n\n\n\n\n\nwindow = 20\nplotter = SubPlotter(12, 8, \"MyData\", [[\"Data0\", \"time\", \"y\", 2, window, 221, ['line1','line2']], \n [\"Data1\", \"time\", \"y\", 2, window, 222, ['line1','line2']],\n [\"Data2\", \"time\", \"y\", 2, window, 212, ['line1','line2']]])\n\nfor x in range(10):\n y11 = random()-0.5\n y12 = random()-0.5\n plotter.add_data(0, x, [y11, y12])\n y21 = random()-0.5\n y22 = random()-0.5 \n plotter.add_data(1, x, [y21, y22])\n y21 = random()-0.5\n y22 = random()-0.5 \n plotter.add_data(2, x, [y21, y22])\n \nplotter.draw()", + "crumbs": [ + "Plotting" + ] + }, + { + "objectID": "functions.html", + "href": "functions.html", + "title": "Functions", + "section": "", + "text": "Each function outputs the result of applying the function logic and may be a scalar or array, depending on the input. The inputs are supplied as links to another function, from where the values are read. Unless the function is a simple case, such as a ‘Constant’.\nParameters are supplied as arguments to the constructor of the class.\nAll functions include the methods defined by the BaseFunction class.\n\nsource\n\n\n\n HPCTFUNCTION (value, names=None, module=None, qualname=None, type=None,\n start=1)\n\nTypes of control functions in a node.", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#basefunction", + "href": "functions.html#basefunction", + "title": "Functions", + "section": "BaseFunction", + "text": "BaseFunction\n\nsource\n\nBaseFunction\n\n BaseFunction (name=None, value=None, links=None, new_name=True,\n namespace=None)\n\nBase class of a PCT function. This class is not used directly by developers, but defines the functionality common to all.\n\nsource\n\n\nFunctionFactory\n\n FunctionFactory ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\n#show_doc(BaseFunction.summary)\n\n\n#show_doc(BaseFunction.get_config)", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#subtract", + "href": "functions.html#subtract", + "title": "Functions", + "section": "Subtract", + "text": "Subtract\n\nsource\n\nSubtract\n\n Subtract (value=0, name='subtract', links=None, new_name=True,\n namespace=None, **cargs)\n\nA function that subtracts one value from another. Parameter: None. Links: Two links required to each the values to be subtracted.\n\nsource\n\n\nProportional\n\n Proportional (gain=1, value=0, name='proportional', links=None,\n new_name=True, namespace=None, **cargs)\n\nA proportion of the input value as defined by the gain parameter. Parameters: The gain value. Links: One.\n\nsource\n\n\nVariable\n\n Variable (value=0, name='variable', links=None, new_name=True,\n namespace=None, **cargs)\n\nA function that returns a variable value. Parameter: The variable value. Links: None\n\nsource\n\n\nPassOn\n\n PassOn (value=0, name='variable', links=None, new_name=True,\n namespace=None, **cargs)\n\nA function that passes on a variable value from a linked function. Parameter: None. Links: One\n\nsource\n\n\nGreaterThan\n\n GreaterThan (threshold=0, upper=1, lower=0, value=0, name='greaterthan',\n links=None, new_name=True, namespace=None, **cargs)\n\nOne of two supplied values is returned if the input is greater than supplied threshold. Parameters: The threshold and upper and lower value. Links: One\n\nsource\n\n\nConstant\n\n Constant (value=0, name='constant', new_name=True, namespace=None,\n **cargs)\n\nA function that returns a constant value. Parameter: The constant value. Links: None\n\nsource\n\n\nStep\n\n Step (upper=None, lower=None, delay=None, period=None, value=0,\n name='step', new_name=True, namespace=None, **cargs)\n\nA function that returns an alternating signal. Parameter: The upper and lower values, and a delay value. Links: None\n\nsource\n\n\nIntegration\n\n Integration (gain=1, slow=2, value=0, name='integration', links=None,\n new_name=True, namespace=None, **cargs)\n\nA leaky integrating function. Equivalent of a exponential smoothing function, of the amplified input. Parameters: The gain and slow values. Links: One.\n\nsource\n\n\nIntegrationDual\n\n IntegrationDual (gain=1, slow=2, value=0, name='integration', links=None,\n new_name=True, namespace=None, **cargs)\n\nA leaky integrating function, applying one signal to another. Equivalent of a exponential smoothing function, of the amplified input. Parameters: The gain and slow values. Links: Two.\n\nsource\n\n\nSigmoid\n\n Sigmoid (range=2, slope=10, value=0, name='sigmoid', links=None,\n new_name=True, namespace=None, **cargs)\n\nA sigmoid function. Similar to a proportional function, but kept within a limit (+/- half the range). Parameters: The range and slope values. Links: One.\n\nsource\n\n\nWeightedSum\n\n WeightedSum (weights=[0], value=0, name='weighted_sum', links=None,\n new_name=True, usenumpy=False, namespace=None, **cargs)\n\nA function that combines a set of inputs by multiplying each by a weight and then adding them up. Parameter: The weights array. Links: Links to all the input functions.\n\nsource\n\n\nSmoothWeightedSum\n\n SmoothWeightedSum (weights=[0], smooth_factor=0.0, value=0,\n name='smooth_weighted_sum', links=None, new_name=True,\n usenumpy=False, namespace=None, **cargs)\n\nA function that combines a set of inputs by multiplying each by a weight and then adding them up. And then smooths the result. Parameter: The weights array. Links: Links to all the input functions.\n\nsource\n\n\nIndexedParameter\n\n IndexedParameter (index=None, value=0, name='indexed_parameter',\n links=None, new_name=True, namespace=None, **cargs)\n\nA function that returns a parameter from a linked function, indexed by number. Parameter: The index. Links: One.", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#sigmoidweightedsum", + "href": "functions.html#sigmoidweightedsum", + "title": "Functions", + "section": "SigmoidWeightedSum", + "text": "SigmoidWeightedSum\n\nsource\n\nSigmoidWeightedSum\n\n SigmoidWeightedSum (weights=[0], range=2.0, slope=10.0, value=0,\n name='sigmoid_weighted_sum', links=None,\n new_name=True, usenumpy=False, namespace=None,\n **cargs)\n\nA function that combines a set of inputs by multiplying each by a weight and then adding them up. And then limits the output by squashing with a sigmoid function. Parameter: The weights array. Links: Links to all the input functions.", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#sigmoidsmoothweightedsum", + "href": "functions.html#sigmoidsmoothweightedsum", + "title": "Functions", + "section": "SigmoidSmoothWeightedSum", + "text": "SigmoidSmoothWeightedSum\n\nsource\n\nSigmoidSmoothWeightedSum\n\n SigmoidSmoothWeightedSum (weights=[0], smooth_factor=0.0, range=2.0,\n slope=10.0, value=0,\n name='sigmoid_smooth_weighted_sum', links=None,\n new_name=True, usenumpy=False, namespace=None,\n **cargs)\n\nA function that combines a set of inputs by multiplying each by a weight and then adding them up. It then smooths the result and then limits the output by squashing with a sigmoid function. Parameter: The weights array. Links: Links to all the input functions.\n\nsource\n\n\nDerivative\n\n Derivative (history_length=1, value=0, name='derivative', links=None,\n new_name=True, usenumpy=False, namespace=None, **cargs)\n\nA function that provides the difference to previous values of the input signal. Parameter: The weights array. Links: Links to all the input functions.\n\nsource\n\n\nDerivativeWeightedSum\n\n DerivativeWeightedSum (weights=[0], history_length=1, value=0,\n name='derivative_weighted_sum', links=None,\n new_name=True, usenumpy=False, namespace=None,\n **cargs)\n\nA function that combines a set of inputs by multiplying each by a weight and then adding them up. And then takes the difference of with a past value. Parameter: The weights array. Links: Links to all the input functions.", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#creating-functions", + "href": "functions.html#creating-functions", + "title": "Functions", + "section": "Creating Functions", + "text": "Creating Functions\nStandard class constructor. Different ways to create a function with the standard constructor.\n\nprop = Proportional()\nprint(prop.get_config())\nprop = Proportional(\"myprop\", 10)\nprint(prop.get_config())\nprop = Proportional(gain=10)\nprint(prop.get_config())\n\n{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}\n{'type': 'Proportional', 'name': 'proportional', 'value': 10, 'links': {}, 'gain': 'myprop'}\n{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 10}\n\n\nConfiguration class constructor. Create the function by passing a configuration structure to the constructor.\n\nprop = Proportional(**{'name': 'myprop', 'value': 5, 'gain': 20})\nprint(prop.get_config())\n\n{'type': 'Proportional', 'name': 'myprop', 'value': 5, 'links': {}, 'gain': 20}\n\n\nConfiguration class method. Create the function by passing a configuration structure to a class method.\n\nconfig = {'name': 'myprop', 'value': -0.5, 'gain': 21}\nprop = Proportional.from_config(config)\nprint(prop.get_config())\n\n{'type': 'Proportional', 'name': 'myprop', 'value': -0.5, 'links': {}, 'gain': 21}\n\n\n\nprop = Proportional()\nprint(prop.get_config())\nprop1 = Proportional.from_config(prop.get_config())\nprint(prop1.get_config())\nassert prop.get_config() == prop1.get_config()\n\n{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}\n{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}\n\n\nAn example showing creating a WeightedSum function.\n\nwts=[1,1,1]\nws = WeightedSum(weights=wts)\nns = ws.namespace\nws.add_link(Constant(10, namespace=ns))\nws.add_link(Constant(5, namespace=ns))\nws.add_link(Constant(20, namespace=ns))\nassert ws() == 35\nconfig = ws.get_config()\n\n\n#ws1 = WeightedSum.from_config(config, namespace=ns)\nws1 = WeightedSum.from_config(config, new_name= 'weighted_sum1', namespace=ns)\nws1.get_config()\n\n{'type': 'WeightedSum',\n 'name': 'weighted_sum1',\n 'value': 35,\n 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'},\n 'weights': [1, 1, 1]}\n\n\n\nscons = Constant(2, name='scons')\nsig = Sigmoid()\nsig.add_link(scons)\nsig()\n\n0.9999092042625952\n\n\n\ncons = Constant([2,2], name='cons')\nprint(cons.output_string()+ \"\")\n\n[2, 2]", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#viewing-functions", + "href": "functions.html#viewing-functions", + "title": "Functions", + "section": "Viewing Functions", + "text": "Viewing Functions\nView the details of the function with the “summary”, which prints the name, type, parameters, value and links (if any).\n\nprop.summary()\n\nproportional Proportional | gain 1 | 0 \n\n\nAs already seen the function details can be seen by retrieving the configuration.\n\nprint(prop.get_config())\n\n{'type': 'Proportional', 'name': 'proportional', 'value': 0, 'links': {}, 'gain': 1}\n\n\nOr you can print the function.\n\nprint(prop)\n\n{'namespace': UUID('c2f442d0-fb5c-11ee-ae40-5c879c15de65'), 'value': 0, 'links': [], 'checklinks': True, 'name': 'proportional', 'decimal_places': 3, 'gain': 1}\n\n\nSet the decimal places for output display.\n\nprint(prop.output_string())\nprop.set_decimal_places(2)\nprint(prop.output_string())\n\n0.000\n0.00\n\n\nYou can also view a function graphically as a network of connected nodes.\n\nsub = Subtract(links=[Constant(1, name='cons'), Proportional(10, name='prop')], name='sub')\nprint(sub.value)\ng = sub.graph()\nprint(g)\nsub.draw(node_size=2000)\n\n0\nDiGraph with 3 nodes and 2 edges", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#save-and-load", + "href": "functions.html#save-and-load", + "title": "Functions", + "section": "Save and Load", + "text": "Save and Load\nSave a function to file.\n\nimport json\n\n\nprint(ws.get_config())\nws.save(\"ws.json\")\n\n{'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}\n\n\nCreate a function from file.\n\nwss = WeightedSum.load(\"ws.json\", new_name='weighted_sum1', namespace=ns)\nprint(ws.get_config())\nprint(wss.get_config())\nassert wss.get_config() == {'type': 'WeightedSum', 'name': 'weighted_sum2', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}\n\n{'type': 'WeightedSum', 'name': 'weighted_sum', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}\n{'type': 'WeightedSum', 'name': 'weighted_sum2', 'value': 35, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [1, 1, 1]}", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#setting-links", + "href": "functions.html#setting-links", + "title": "Functions", + "section": "Setting Links", + "text": "Setting Links\nThe next cell shows how a link is added to one function from another. In this case from an Integration function to a Constant function. So, whenever “integrator” runs it will get its input from “cons”.\n\nintegrator = Integration(3, 10)\ncons = Constant(5)\nintegrator.add_link(cons)\nintegrator.summary()\n\noutput = integrator()\nprint(output)\nassert output == 1.5\n\nintegration Integration | gain 3 slow 10 | 0 | links constant \n1.5\n\n\n\nUniqueNamer.getInstance().clear() # initialises the list of function names\ninteg = Integration(**{'name': 'myinteg', 'value': 1, 'gain': 20, 'slow': 100})\nprop = Proportional(5, name=\"myprop\")\ninteg.add_link(prop)\nprint(integ.get_config())\nassert integ.get_config() == {'type': 'Integration', 'name': 'myinteg', 'value': 1, 'links': {0: 'myprop'}, 'gain': 20, 'slow': 100}\n\n{'type': 'Integration', 'name': 'myinteg', 'value': 1, 'links': {0: 'myprop'}, 'gain': 20, 'slow': 100}\n\n\nYou can also define the link when you create the function, as in this example with “Proportional”.\n\nconst = Constant(1, name='const')\nns = const.namespace\nprint(const())\npr1 = Proportional(name='pr1', links=const, namespace=ns)\npr1.summary()\nassert pr1() == 1\n\n1\npr1 Proportional | gain 1 | 0 | links const \n\n\nIt can be the name of the linked function.\n\npr = Proportional(gain=10, name='pr', links='const', namespace=ns)\npr.summary()\nassert pr() == 10\nprint(pr())\n\npr Proportional | gain 10 | 0 | links const \n10\n\n\nOr it can be a list of names.\n\nsub = Subtract(links=[ 'pr', 'const'], namespace=ns)\nprint(sub.get_config())\nprint(const())\nprint(pr())\nprint(pr())\nsub.summary()\nprint(sub())\nassert sub()==9\n\n{'type': 'Subtract', 'name': 'subtract', 'value': 0, 'links': {0: 'pr', 1: 'const'}}\n1\n10\n10\nsubtract Subtract | 0 | links pr const \n9", + "crumbs": [ + "Functions" + ] + }, + { + "objectID": "functions.html#running-a-fucntion", + "href": "functions.html#running-a-fucntion", + "title": "Functions", + "section": "Running a Fucntion", + "text": "Running a Fucntion\nA function can simply be run by calling it, without any parameters. It will use whatever input was set by the links. It returns the result of the function. In this example it will be 5 * 3 / 10, that is, input * gain / slow.\n\nout = sub()\nprint(out)\n\n9\n\n\nA function can be also run in a loop with the run() method and provided the loop count.\n\nintegrator = Integration(gain=3, slow=10)\nintegrator.add_link(sub)\no = integrator.run(steps=10, verbose=True)\n\n2.700 5.130 7.317 9.285 11.057 12.651 14.086 15.377 16.540 17.586 \n\n\n\nintegrator(verbose=True)\n\n18.527 \n\n\n18.527113905569998\n\n\n\noutput = integrator()\nprint(output)\n#assert output == 1.5\nnpt.assert_almost_equal(output, 19.374402515013)\n\n19.374402515013\n\n\n\nprint(integrator.get_config())\n\n{'type': 'Integration', 'name': 'integration', 'value': 19.374402515013, 'links': {0: 'subtract'}, 'gain': 3, 'slow': 10}\n\n\nAn example showing creating and running a sigmoid WeightedSum function.\n\nwts=[0.01,0.01,0.01]\nsgws = SigmoidWeightedSum(weights=wts, range=1.0, slope=5.0)\nns = sgws.namespace\nsgws.add_link(Constant(10, namespace=ns))\nsgws.add_link(Constant(5, namespace=ns))\nsgws.add_link(Constant(20, namespace=ns))\nsgws.summary()\nprint(sgws.get_parameters_list())\n\nout = sgws()\nprint(out)\nassert out == 0.3519528019683106\n\nsigmoid_weighted_sum SigmoidWeightedSum | weights [0.01, 0.01, 0.01] range 1.00 slope 5.00 | 0 | links constant constant1 constant2 \n[[0.01, 0.01, 0.01], 1.0, 5.0]\n0.3519528019683106\n\n\nAn example showing creating and running a sigmoid smooth WeightedSum function.\n\nwts=[0.01,0.01,0.01]\nsgsmws = SigmoidSmoothWeightedSum(weights=wts, smooth_factor=0.9)\nns = sgsmws.namespace\nsgsmws.add_link(Constant(10, namespace=ns))\nsgsmws.add_link(Constant(5, namespace=ns))\nsgsmws.add_link(Constant(20, namespace=ns))\nsgsmws.summary()\nprint(sgsmws.get_parameters_list())\nprint(sgsmws.get_graph_name())\nlabels = {}\nsgsmws.get_weights_labels_funcdata(labels)\nprint('wts labels',labels)\nfor _ in range(5):\n # print(sgsmsm())\n out = sgsmws()\n print(out)\n\nnpt.assert_almost_equal(out, 0.34373448930708195)\n\nsigmoid_smooth_weighted_sum SigmoidSmoothWeightedSum | weights [0.01, 0.01, 0.01] smooth 0.90 range 2.00 slope 10.00 | 0 | links constant constant1 constant2 \n[[0.01, 0.01, 0.01], 0.9, 2.0, 10.0]\nsigmoid_smooth_weighted_sum\n0.90:2.00|10.00\nwts labels {('sigmoid_smooth_weighted_sum\\n0.90:2.00|10.00', 'constant\\n10.00'): '0.01', ('sigmoid_smooth_weighted_sum\\n0.90:2.00|10.00', 'constant1\\n5.00'): '0.01', ('sigmoid_smooth_weighted_sum\\n0.90:2.00|10.00', 'constant2\\n20.00'): '0.01'}\n0.08727737447415773\n0.16473508145615878\n0.23277835967904958\n0.2921474527779875\n0.34373448930708195\n\n\nAn example showing creating and running a smoothed WeightedSum function.\n\nwts=[1.0,1.0,1.0]\nwts=[0.01,0.01,0.01]\nsmws = SmoothWeightedSum(weights=wts, smooth_factor=0.9)\nns = smws.namespace\nsmws.add_link(Constant(10, namespace=ns))\nsmws.add_link(Constant(5, namespace=ns))\nsmws.add_link(Constant(20, namespace=ns))\nsmws.summary()\nprint(smws.get_parameters_list())\nprint(smws.get_graph_name())\nfor _ in range(5):\n out = smws()\n print(out)\n\nnpt.assert_almost_equal(out, 0.1433285)\n\nsmooth_weighted_sum SmoothWeightedSum | weights [0.01, 0.01, 0.01] smooth 0.90 | 0 | links constant constant1 constant2 \n[[0.01, 0.01, 0.01], 0.9]\nsmooth_weighted_sum\n0.90\n0.034999999999999996\n0.0665\n0.09485\n0.120365\n0.1433285\n\n\nAn example showing creating and running a derivative function.\n\ndv = Derivative(history_length=5)\nns = dv.namespace\ncons = Constant(10, namespace=ns)\ndv.add_link(cons)\ndv.summary()\nprint(dv.get_config())\nprint(dv.get_parameters_list())\nprint(dv.get_graph_name())\nlabels = {}\ndv.get_weights_labels(labels)\nprint(labels)\nfor i in range(20):\n cons.set_value(i*i)\n out = dv()\n print(out, end=\" \")\n\nprint()\nassert out == -136\nprint(dv.history)\nassert dv.history == [225, 256, 289, 324, 361]\n\nderivative Derivative | history_length 5 | 0 | links constant \n{'type': 'Derivative', 'name': 'derivative', 'value': 0, 'links': {0: 'constant'}, 'history_length': 5}\n[5]\nderivative\n5.00\n{}\n0 -1 -4 -9 -16 -24 -32 -40 -48 -56 -64 -72 -80 -88 -96 -104 -112 -120 -128 -136 \n[225, 256, 289, 324, 361]\n\n\nAn example showing creating a derivative WeightedSum function.\n\nwts=[0.01,0.01,0.01]\ndvws = DerivativeWeightedSum(weights=wts, history_length=5)\nns = dvws.namespace\ncons = Constant(10, namespace=ns)\ndvws.add_link(cons)\n\n#dvws.add_link(Constant(10, namespace=ns))\ndvws.add_link(Constant(5, namespace=ns))\ndvws.add_link(Constant(20, namespace=ns))\ndvws.summary()\nprint(dvws.get_config())\nprint(dvws.get_parameters_list())\nprint(dvws.get_graph_name())\nlabels = {}\ndvws.get_weights_labels(labels)\nprint(labels)\nfor i in range(20):\n cons.set_value(i*i)\n out = dvws()\n print(out, end=\" \")\n\nprint()\nnpt.assert_almost_equal(out, -1.3599999999999999)\nprint(dvws.history)\nassert dvws.history == [2.5, 2.81, 3.14, 3.49, 3.86]\n\nderivative_weighted_sum DerivativeWeightedSum | weights [0.01, 0.01, 0.01] history_length 5 | 0 | links constant constant1 constant2 \n{'type': 'DerivativeWeightedSum', 'name': 'derivative_weighted_sum', 'value': 0, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [0.01, 0.01, 0.01], 'history_length': 5}\n[[0.01, 0.01, 0.01], 5]\nderivative_weighted_sum\n5\n{('derivative_weighted_sum', 'constant'): '0.01', ('derivative_weighted_sum', 'constant1'): '0.01', ('derivative_weighted_sum', 'constant2'): '0.01'}\n0.0 -0.010000000000000009 -0.040000000000000036 -0.09000000000000002 -0.16000000000000003 -0.24 -0.31999999999999995 -0.39999999999999997 -0.4800000000000001 -0.56 -0.64 -0.72 -0.7999999999999998 -0.8799999999999999 -0.96 -1.04 -1.12 -1.2000000000000002 -1.2800000000000002 -1.3599999999999999 \n[2.5, 2.81, 3.14, 3.49, 3.86]\n\n\n\nwts=[0.01,0.01,0.01]\ndvws = DerivativeWeightedSum(weights=wts, history_length=0)\nns = dvws.namespace\ncons = Constant(10, namespace=ns)\ndvws.add_link(cons)\ndvws.add_link(Constant(5, namespace=ns))\ndvws.add_link(Constant(20, namespace=ns))\ndvws.summary()\nprint(dvws.get_config())\nprint(dvws.get_parameters_list())\nprint(dvws.get_graph_name())\nlabels = {}\ndvws.get_weights_labels(labels)\nprint(labels)\nfor i in range(20):\n cons.set_value(i*i)\n out = dvws()\n print(out, end=\" \")\n\nprint()\nnpt.assert_almost_equal(out, 3.86)\n\nderivative_weighted_sum DerivativeWeightedSum | weights [0.01, 0.01, 0.01] history_length 0 | 0 | links constant constant1 constant2 \n{'type': 'DerivativeWeightedSum', 'name': 'derivative_weighted_sum', 'value': 0, 'links': {0: 'constant', 1: 'constant1', 2: 'constant2'}, 'weights': [0.01, 0.01, 0.01], 'history_length': 0}\n[[0.01, 0.01, 0.01], 0]\nderivative_weighted_sum\n0\n{('derivative_weighted_sum', 'constant'): '0.01', ('derivative_weighted_sum', 'constant1'): '0.01', ('derivative_weighted_sum', 'constant2'): '0.01'}\n0.25 0.26 0.29000000000000004 0.34 0.41000000000000003 0.5 0.61 0.74 0.8900000000000001 1.06 1.25 1.46 1.69 1.94 2.21 2.5 2.81 3.14 3.49 3.86", + "crumbs": [ + "Functions" + ] + } +] \ No newline at end of file diff --git a/site_libs/bootstrap/bootstrap-icons.css b/site_libs/bootstrap/bootstrap-icons.css new file mode 100644 index 00000000..285e4448 --- /dev/null +++ b/site_libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,2078 @@ +/*! + * Bootstrap Icons v1.11.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?2820a3852bdb9a5832199cc61cec4e65") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } +.bi-alphabet-uppercase::before { content: "\f2a5"; } +.bi-alphabet::before { content: "\f68a"; } +.bi-amazon::before { content: "\f68d"; } +.bi-arrows-collapse-vertical::before { content: "\f690"; } +.bi-arrows-expand-vertical::before { content: "\f695"; } +.bi-arrows-vertical::before { content: "\f698"; } +.bi-arrows::before { content: "\f6a2"; } +.bi-ban-fill::before { content: "\f6a3"; } +.bi-ban::before { content: "\f6b6"; } +.bi-bing::before { content: "\f6c2"; } +.bi-cake::before { content: "\f6e0"; } +.bi-cake2::before { content: "\f6ed"; } +.bi-cookie::before { content: "\f6ee"; } +.bi-copy::before { content: "\f759"; } +.bi-crosshair::before { content: "\f769"; } +.bi-crosshair2::before { content: "\f794"; } +.bi-emoji-astonished-fill::before { content: "\f795"; } +.bi-emoji-astonished::before { content: "\f79a"; } +.bi-emoji-grimace-fill::before { content: "\f79b"; } +.bi-emoji-grimace::before { content: "\f7a0"; } +.bi-emoji-grin-fill::before { content: "\f7a1"; } +.bi-emoji-grin::before { content: "\f7a6"; } +.bi-emoji-surprise-fill::before { content: "\f7a7"; } +.bi-emoji-surprise::before { content: "\f7ac"; } +.bi-emoji-tear-fill::before { content: "\f7ad"; } +.bi-emoji-tear::before { content: "\f7b2"; } +.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } +.bi-envelope-arrow-down::before { content: "\f7b8"; } +.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } +.bi-envelope-arrow-up::before { content: "\f7be"; } +.bi-feather::before { content: "\f7bf"; } +.bi-feather2::before { content: "\f7c4"; } +.bi-floppy-fill::before { content: "\f7c5"; } +.bi-floppy::before { content: "\f7d8"; } +.bi-floppy2-fill::before { content: "\f7d9"; } +.bi-floppy2::before { content: "\f7e4"; } +.bi-gitlab::before { content: "\f7e5"; } +.bi-highlighter::before { content: "\f7f8"; } +.bi-marker-tip::before { content: "\f802"; } +.bi-nvme-fill::before { content: "\f803"; } +.bi-nvme::before { content: "\f80c"; } +.bi-opencollective::before { content: "\f80d"; } +.bi-pci-card-network::before { content: "\f8cd"; } +.bi-pci-card-sound::before { content: "\f8ce"; } +.bi-radar::before { content: "\f8cf"; } +.bi-send-arrow-down-fill::before { content: "\f8d0"; } +.bi-send-arrow-down::before { content: "\f8d1"; } +.bi-send-arrow-up-fill::before { content: "\f8d2"; } +.bi-send-arrow-up::before { content: "\f8d3"; } +.bi-sim-slash-fill::before { content: "\f8d4"; } +.bi-sim-slash::before { content: "\f8d5"; } +.bi-sourceforge::before { content: "\f8d6"; } +.bi-substack::before { content: "\f8d7"; } +.bi-threads-fill::before { content: "\f8d8"; } +.bi-threads::before { content: "\f8d9"; } +.bi-transparency::before { content: "\f8da"; } +.bi-twitter-x::before { content: "\f8db"; } +.bi-type-h4::before { content: "\f8dc"; } +.bi-type-h5::before { content: "\f8dd"; } +.bi-type-h6::before { content: "\f8de"; } +.bi-backpack-fill::before { content: "\f8df"; } +.bi-backpack::before { content: "\f8e0"; } +.bi-backpack2-fill::before { content: "\f8e1"; } +.bi-backpack2::before { content: "\f8e2"; } +.bi-backpack3-fill::before { content: "\f8e3"; } +.bi-backpack3::before { content: "\f8e4"; } +.bi-backpack4-fill::before { content: "\f8e5"; } +.bi-backpack4::before { content: "\f8e6"; } +.bi-brilliance::before { content: "\f8e7"; } +.bi-cake-fill::before { content: "\f8e8"; } +.bi-cake2-fill::before { content: "\f8e9"; } +.bi-duffle-fill::before { content: "\f8ea"; } +.bi-duffle::before { content: "\f8eb"; } +.bi-exposure::before { content: "\f8ec"; } +.bi-gender-neuter::before { content: "\f8ed"; } +.bi-highlights::before { content: "\f8ee"; } +.bi-luggage-fill::before { content: "\f8ef"; } +.bi-luggage::before { content: "\f8f0"; } +.bi-mailbox-flag::before { content: "\f8f1"; } +.bi-mailbox2-flag::before { content: "\f8f2"; } +.bi-noise-reduction::before { content: "\f8f3"; } +.bi-passport-fill::before { content: "\f8f4"; } +.bi-passport::before { content: "\f8f5"; } +.bi-person-arms-up::before { content: "\f8f6"; } +.bi-person-raised-hand::before { content: "\f8f7"; } +.bi-person-standing-dress::before { content: "\f8f8"; } +.bi-person-standing::before { content: "\f8f9"; } +.bi-person-walking::before { content: "\f8fa"; } +.bi-person-wheelchair::before { content: "\f8fb"; } +.bi-shadows::before { content: "\f8fc"; } +.bi-suitcase-fill::before { content: "\f8fd"; } +.bi-suitcase-lg-fill::before { content: "\f8fe"; } +.bi-suitcase-lg::before { content: "\f8ff"; } +.bi-suitcase::before { content: "\f900"; } +.bi-suitcase2-fill::before { content: "\f901"; } +.bi-suitcase2::before { content: "\f902"; } +.bi-vignette::before { content: "\f903"; } diff --git a/site_libs/bootstrap/bootstrap-icons.woff b/site_libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..dbeeb055674125ad78fda0f3d166b36e5cc92336 GIT binary patch literal 176200 zcmZ6SbyyUC7sW9!5J7YWX;@miUAjA$5+r2-2|<=_6$w#bgHDkJBm@EJQV`gsB}7_e z>5^`EXMTUaKF=J!_jAs@GaIZkv+Ad>rbcp!goNbs7Y&kIz|ZSC4FA=@^8f#+8<{AP zkX*U}aA{yOW_iaEsBa`F0x%VzRs=R%IWi+5`{#Bq02WO`BDzUJ;u&f8kFVLuEx?h4 zMBJa`vT!BIHQG-iKWulOIoKgcE<5o7eZUM7iN_@$6rKSPV75Tb1Z?b=U)-d6_S_rj zb9xEP3?(69xoUUw+|JFz9>_TZ5y%X{ZajFd$oJgN{{_kAkUs!q1~!(Pk1n~o+dX$6 zxeTHZ@w(f<8mp94fFa;74Vc@X@NAiYJYWru{+ahdj|2!44{bFy6^xU~= z_orKvk6@2_YHRnB1SKPqF3cq=i+**b<4RZgOJ@oe$MEROB%IQu8YEz^-LPH8w{KnF zzI}2PqF8r_z3T{Zecc5_yH0HcUixg`{rq{RVl3LK>AS)jbl< zh?_rvqw~*LpNhCh7^x@yH$@M*zeatJKB0n?M{^louWX<|&ZoeR`;ml6fJ;GCzf+*@ zsPHM=Bqd$Q^m8PMIN|$sB)V}lxjA(}<`gQrv*Gl)(@TaaFTqU9+_UM0R^qeIUr%j{ z{JoBHkAE=Ntl;j2P2TU^yt&=*RphAEF6gut9_4+0L+>ccbT*+RBhQ4^r}ANOSK)Ti z>!MHYW{JiQCaNYTBgQ@^%2UNIMHWTXMY$_Qfh%$*HsS`iP1r^riyP{ih>loR8Ssys zty~(>sxp0U{A5J0%8b!ieMHm8)XLawMAyem)>wb@!6-5@#y5Q*Y)QW{&N&*dIjpjzK0=t1@N1nLEq!r~C zF1tjg6;7L04!en~_nPbs2UjWZ8^0TVTBX8o(mjlV{ZCCU+2dvBrWc>CtbCBd zi99qkPb|vlDt;|h689;0#bz&CD!)o%+@+w2LTUwC|4B|WyX4)n(Qe_fn3ZMnK*6f$ zZt5{#NVS}Lc5(mE;_9v4h+}9-d9zCLaPkW8ZsKuZNO-eh@-K&7-D5{9)8wIfA5tsB znIexNzg4aJie`1QpC&%qQ(Ar_Q{H}4$_K-gE7tWjp&IffCrj$yVP~I0b>vI42d?a5 zk9p3%hN{UIUtduS{1U21`LlmDCoqMnRDH=X@GDbp=L*fv@|l`Y1C0Qr|T^D?8U`79D?JA1gY2 z^`0)3(QpPrPof~jsMk5amd8#{(kVr>*L=avD-JfA;nXKdlX9z9b>XSkTOMZt@#NI* z-unw$UWq&or4pkluDw1B*Nny!MDO=}UXU=F7#8-?mG#Ol^q@Ett=9nX>(|s1CE2rIr=zBSLn#SC!QH8*{;ekNE!GokIK8C2NRlT=|gvAs_n)bQEe z^>@&ENOkjbTl(>i>bK8b(#IC6Bc3~N);xE6GSOFE!|0|yLD;XR9E*C+JTbao8UOoy z-|!?QWKz!V`fsjvqkZR-_aVP1zJ{;ao@6jS&8|^i7m}Wg`y%)o?VG^(yz_VYzN&Oz zGs332?6=vv>%PxPWXMol&Al}hX@Xw0#~6=qeWsn$c+EPW^h95|*SgF}T*zo&&8;=1 z2E0JE_8PpQN1%pxEoeWaVKCHI{%i4?`o4X`cxid|Z~b+reXo;&dCKWv zqGerv|E27bfLC$@?_}b}L$fZc^-|B#2Kvd~(h}aqt_HHwj}7fpEAC!34bqdD8v=ec z#l(jVL6*1u%8Hj=>c&gsidR?aPAu<@4vTyBTHP8Ql>IZ_Kv9ZaU8!$iDlG^a*h4l= zDR0<~cJBF{O|q4?(ErKu)~_p=65TMD9Jq}PpYn2#4w}C0(>D1+vbE`tTD_tB*Px$G zL~GBoddW!@NrJAgM;(uQQP4y$vT}-{W`G~rJyo!A>mcuBJY=rf$8}2TAoIzlL~XD8 zyNQ)h?}O|p$I(tqRX!=}PEQlvK$N2mQ)GY{krm);$IJZBH95M0pTDmWer_Oxlu-su15 zbX<7~1Ag(d{2BkbX;?!`+syLjw%>_X zb45$1+0IDF?Xa@4_0_|Z;E}@pyK~XVyb^UZ8~P^fd;D(h=`;C`_&vd6&vTB8 zitHt>Bf>eqe7pYM(5bh4TmP=diFs&s_TtRe=J8SJE1M;nqxN(Ai^7Y^u-TR^`NPlW z>Mgw&Yhhb0$1|tCEp3~-4X5rcofq>5CoO04=P%`#D39Lj2d{WF|Dil#JC_gZVWxZt zx!vB%ljF}#)kp3WQP~EYZF~`0%VPOJfXplcKD+Wlw^qWErj%0h4ZZTR0p}#dox(x6 z&OmOGY2$`pWP?(sf#mS5Sf#lEcCp*NO78}wzTON`YWb(J#LRR%KBBYjo}Gffh|K*g zivBlFZQq2r$tn6HSZ9xf#K>>8wMG9^dd!gYCeP0NF_Y<=gVyVICWqX?45m@yv)F&m zhkU_I%{Oc!%UVZg)BinxO#drlv-S83s~dTG>w%ruA*a9Qjc|4+yQ@`&c_EVKv`F*(t zADw;-SLf5M1b-J9e(HFR;aY!R8Llk){&$O=xBfux9p% zmh2cT*Jfo4Hl$?^goh?F@RF_*mTZ-H3hfW659d4%&~) z72O`tw{w;|yHTfiQkOe4%FEq((q3I|wMG@xaoxV`x3nCDIWFYy%R@x)LpjFl9g16Z zkJ#myqdM$7{TZm#+kblMFwon)7i>?StL>C`o+%pznz{wr(&VhE$?mG%jP7vCTb;0-_5k|c`8pnkZj+aTd3u5e<$CbJtw#| zS}S|bp0I}iW9cJa z)g}B+yklJ}0YUMfKdSvMs!j{}R*gJp*gPXWSF$l_`q2E3@vQh<{GvXr&FQRVcKC(G zBiRfp0gB`|E;;r~5UD7EmF@v??^{#K@dKhV4+0~mXLJ6&__`AB?@@B!wKJ~VXpN!a zM``(!H736wnOpI-yc=(W=CZdweV*^AE%#Kke31O(;O~j2!>Iz}Xl4)7=-AA{>TzIm zp~u3>acHR0r~59e0*-EO%+fzpJv}YylH2D!Bb+^&C1z4QdMzp^B=>cnGVY-QA2;Pr zn=pT(9N}6q+DkpQw8_(6F5VMAmYOm<7!q7UA5%7I1Hbo!g?-C&YN@NevH9=o2$ODI zY1{c9>)I#XH-!As8hWPkF@DKL zP3@z4fB$fN?&2lkaclpJ?9=%1u=TM06xofhqJ2_}jkg5qp{1Xs37Km#sWekO8)9aY zi7yHoL?=@>`26CeM>7}u{Ag-#O{qFIHvCTXPOeX$a^3Jb$fw`rtfh6&51RSxO@CH( zE(N@tf5WzqK7`+tsQsgSLl|f;97Z?$`O{@6Dps@Z5}UaLW*{isKc|@(@vWSCPB}4@xnAnUI3;%QDX2$wBkM(aFi%)j*>d;M^|Rb_;fva^R?6M* zR?S(&O!vV}j<&qniWdR3;*-=H6p2dnFZ4g%E$V14w+Uw7kB{%@{Cmq2k-^~9VeaXh zaZf(p<_Gg!i(Oy}m1AU0TZxc#&rPqk#(#SLl0B5ST9uxR{_--hG%@QnF;hFY9N}Ru zilUpHHW1CC>VH4l@qPbVkbNzO1O;2$Cn2f#H|^Wr*;)GYG%{GfUca}XCa+Us{~@@dTvexL41vV*LXZy`&jb@7v(?p06b z;n=GPRBbA4AW<(m(!uSi*=e==VUCWw@SW(nNK__+-#XczRVV8Nr@H#R}r3jP3g)QQ9 z5{8=)Wg?7CVEP;;x_v_$CdrkL3h9tZEIwr!1=u2!BLSjk@Kh_u!!s>?`5 zyRa_K<1D%YNDEKq8!^LIkk+b2i5YnsRY^N8@aM$FNaH84GL8|wzEzE?T%}J67ujW=JS+rTMbil^ zhTzn?%(I8NVe}|EekWzPJ<(0Yr6eO(vx(d39(<1IrsdL@(W{}0s)QB3MOL$jYxX7K zIJ*Pn3u}nMFNYzpC+M_?POk7FqMNcyea3UmUQ{JxVJfnkYp*(kQKJ`A$yPXq^o5G6 z_x0fxy2c`gWnc}MG(jgx_$}g^o=Z-KtOh@(lB=*CDW~D`Hls;{Ke1A>&;co@;!>AE ziM3#LVuo)L#*&9mko#;^@IG~o&zMU2!gykE!f+>2PR*q%BOZ&nCcS&LunI}RQl;0& zr5VDtXoUOKeI!DC@=QHOk^B%uOTB>a~aqtRSX^kOIs zK{l(nv}6ckkDv6JX`Hbw7UL-JM|6eZ$Y#A2)M-CGP6XMk`4H_TQ&^I5Pa_Yh$DWAw zx?9+ofz`ZE41PCk2P;5HK^KkT>hl?DD>kqK?6H0yEiR4#!-`3rJ|A5AXO8gRA%jaopfMYSl?F`f%Jdmjb^2~r?&3rNrah9GAwg^dy&V{?L-R4^?NKmvjL zKwuN>(gzF-F!u@oDS-|%0EVdmqlAH^3joD|WHzv)Ff9PmE@P0PdccCz*?TV;_jAMs zt=1W;OUHO}+u3`q2KTevRWsLq6ol$@j15_0QodIJLv3*Bw=Q7LVAVR^Ib*G-l<1m{ zuQ=}#O$V0<%$m7eHE1>ca}_$-BT)bf;(p$5!KiVas?m)#W{On=Tz5w7=ndi*W;EH- zFIZyTrd0tW9WW>X!x}K;K?52~KCMni+n6mTa_BLL{}ZOc7EXy$yT;5OOD?BEN1MSK zORfj7N*ww-k2B&$oS4WXeL7l87Qoh_qYZuo^l>{Q{uA8)y(6}9^u z#heLa?^*d_>E$>MC(*dCM7IuXQbzC9K}=<;h6Pf>=na7Kxq(!VCYay?T?iY{0E+;e z1!FKcqybEd0i6UE(8&ZHa?lag1e`u72-88x079?-;D0l+L3kO2w?HTWChJl_co&2i zaF@v#V6deca4=pl@Hp<{I3z{QFiDd=mZ}y=QKOizM8^e}K}>q8tA@6_V<`uJU1}Zh zNE{aeK}ZimcXj~s=z{S`(BTA~bWOnN0tY3qfwn$qzXI%hs57CrhacQe4QNjSI~Vnm z1|cH|{r-dC&b=f7sKWtH>jIqv6c9IN1*R2hfzx8aX;RLFE}h$hn8ef|O>Is`7fjOo z?qMiDZE~Tmg@}Mr)K`RgzJN2KLPvHG{O?1|<5aAt){)#Zo z7j`C;=-eB`n5X9BILJkM!C)E~{K~>Vmf);uQNiOS?@Y+=xq{*n{ z$_m=rfISpPj{GD`OEkDHg3pOVpp-N5EKyQeMG7C*aE2AFYp~&1ARr9{D1ks00wqg{ zQQY5!hOaH_UK`uFLyPEd17HZACFmG5*uvKW-jG)m$OA?$V8o*p_hs~eW%$KpOyMc-zQk&T!h}NOH%e zCn701RR|&FRS>d;(^}|X6aD&%-0>M3ZO;HFU~Up@BPFokOWat)&5r=XftR+YD;^=l zJAt<~4TSZ8av7OX{T)59>|r%vAig`CJ?+yVBx->D>RaOVZ;yI=52^5(g4#6L!6X!zzM0DD(Vr$$C1prL| z+&6FZ<*D#rFDCr0Dr0>&+ML7}y6J=13M%8`4GKVBF&}He(i6I}G7~s?Pu$^=C2I`? zU4+Aot~)31R9XTDC~Tl`0b9JT{V#%&ElHPoIi0E4}SU_Mz9~4JW7C@m!IMC==U=jtiH@JAMl4KN2 z>-n5jLD2<885C_$)Ire)WEqSsYk;BxijJx8cib)WF;Z+PB5w}k4$1~7OrT_ea-E>n z$D*6AV#60ZO@Log*sr1j}%|E{I&J2_X)6oDgzm&N-v>PNEnBmq}o|gNn$dkIKXW7%g%s z^$kNHr#6Kw7Ngux#OF9|69+^|0o(@sR0rxffS&^X4l``GM;I{Xh}SX>YxwkE4APqG z>PfM=;x(NR{IKQsC2U-o=shA%wBl8Ux0(b7+lQxS1rWa$kP5mBB-RL^+YUD9gN|$> z5Zo6-4$_YO1s#t694^oa&+t~>*Fg?mAFIS`UPttEaxtQ0qcRX7`<6(|+}I9YGtQ}> ziwl<3^fH6!zpn(scOVqxy{aHh=f-UG4j1af>8MJHAfHSQJ!s{T+ z1fk!5P#1tt-ew@wt3^OZ7IaL&X~h_D8XGtbY;?(r8Zn9&9^ z@fqZ<`*L9B7|h%TGxXpb2`G?xt^;Hy-hlh!0rur43I-RzAU_yejiCL^9rUJ9cg>J0>zbbvqv5a0y@l0aYs2*?6~ zKp-Ha0hsRqQ!;?qsZ2!EQexE|cUj|mmb95tf5yvH%u;RRBhQKG+wmB62^lq}v44*O z5N-DWa0SmspT!4`9?_+L4Nuar71n==tkK6n>|Sw?EI~ zia(;)V%m{>FSFqBD4=KN#&${z4PdBYI!|Mv@i2N_CNGIdnFTk#fS$2;L}C3oynU86 zG`=n%Rc2w~{&q^b8NuG&nhgM%G7EohZ>NMy66`5Du$>G#Eb*`u4JI$4w=xU1A^|<$ zpAdzw8{zFK@-cwP2AFzGeqq-FCeKodo(D6W@eT6tWHwIRwre-N@N)wF9Pte@@iH6R z(nL@F8IJfMsce~zsmt57ezyp7)BMo*pqdl_+y#I(VUCHPEk5XLhRnuKvh7;+O?0Ph zAQ1nl1r*GvPT6A=P&@<+z&Qr`e!2jKD}IhCM2YEO$p|R2(VbrB88TTrG{mip7WVkX z)B6E3i)Dm4SeP!e7)AfMUj7;K| zS14Ef=y|w|br4NJY;U``095zHT>By2Ue-|@AF-pZkaQB9w z5Zv{lkDy?=@zWVuI*R)XUmpP3T?kplXnp}4)g&Ps`+BX)*%PcexbfEMS$c~5&Vx; zW`V#1$=#JA8&qH3gCP7gJwC9UXa%y7F2DXN1`0XpnAu=DH@+D&4Lp{_uY6#Qgy5tH zw?QETB?goy+!}tk8aQf0!vom4R-iN(l>V<#6KLEOAR824o`T?92em-y0wsuBV-#od zpYQ;y5pE5p{1G0FnmloCKn~z2cWu}I#1LE=0kUd=BmM5HI5}9Yg%71kT>Mz>s{0F7*Ntc0iF`m z@gz{-oD<|7*7Qy0+htpyGG-&;3^Z8a8R(XcU6yBNSCv|(tsjKx*WI5 zN;b&2+y*{Lau8h5U^6J85S-DVI=99F?u`V=T~6NRAsduj9)hs14LNZG>3%q>S@Sv^RjPU25a_#Zgo@M5&Shc5Qsl5SVdQ`Z z#=)p{82>V_jr-%1NF$Y+_aCC=0$xFn5$vkF1n!t6>`%x~E_?2e`W_!c$5Ro|O zF_8l>l6gMrTjv1jL;#2bVD#n%ZR+mrn57s=o{zj8Mk;1HAEHZBG^nhE-$Lu3il}N<8z9!Jp7V&hWj#FhSTCbN-ps{+0NZ1L)6RR-a$zxe(X`+5Q`C^tosW(9RE25pc4){I-pYt!oGYE zMuE^W207}rXqeEDC7u0oa&M9pGGDqVfaCU)^`la)o2h%p(sEQX&hS$Thw&bZ?(7kZ@H9x4HZAzmTCK(d=9k!L-JiB#wlyRc~K zjA8|~jTfa*+Pb#7CwM$#-;|bGpnxAe?Q-?xI^u==CJQfZdIOfv`a+<>|Ez)VSI!vv z?!+K91L42Hgv89&JtVTXd6^Ih6q&_pdcNV7KFGsHar~UymAM&je zw38O3P@VEMY@}oS$V_exeWH}nx2X*!#R|bu;Qjc4UX^fQ=@&D&TE~PFx+hDprDkFe zH(yevt{h0`+umlaI6R`nwyo~6MjZ?$GlYi9Bk@h@czb~pY$tPAf=tD#@OEu+Jhsy+ zmMl4I zZ2yT2En?I_1Yc^0_-7f3Ra|(_5&;W+#fNlYHz#&+!&8=jBGAJ2c&L2`ru8Hc&A08y zU{37SMhLG8V%tkvl*l&EOe$*I%FyjS&3a^;2e&KmFC_`kD;?POscZ#mzc47Qr;{DI zltv)_r1wCpd+4ynk7jF;&Gd@FD~uNMf%B^#miPlXtjzSu1aWKH3Edf#t;-Z59M!l+ zR#yiZDBt1!U_X=dax5VEa=o`4srUG0vZb#PkbjwcA738SrCeU{xk=j74JS)MJK(<1 z^A)@tvr@cNxx+--vvC3uYT)Iu^_Bnda_kIs+0pMl0M!A=Z1iodG(S4T={65>hYR?G z%7&}thp15BYsDPuyx(0681EoLb}7b4s}W292x#`&(lB7(tj^*S=;^JmCbMi?%7u`w2!wWtr- z3J%SWUfj8*DwA!)^Y`dfjjXOdQ>?j|5%KTb57TzAFCBnrXD0rPZNTT!`(f4N*IDD4 zCbXGoPq_jR|7?iDWhdN!f`02?0{)@PpuaVEZwmPmDz(C*>OIUFQ+q-SY&TUW5BPvB z0lEgrff3Z zp_4Mj!^oVMJ5LL74*I>>Y8F|}&5xV|@{jJ~I7D{}ut@@hY(Yt=<_ZcCADK- z8_aue({s2;#l1yAHns+XbEHVc^~Ew4wiEYrEs??aqhdV1IbBdyZGY-?1c8|8wNX|J z6bj>~UH*RRgTS3^k7Cgq-7^Ym$J}9Tw1oX&XOW7{g>Do&L^A9iErD>_3pOQluoz@uJ$z(R_VR@Lki{7tFjc)CKdq{!nT2;C*TQ-^v+H>g+Rt3X$xi20~Zx z0xvr8sK<VenssS6GGPjvG_mE1@JOO(*@BmLG#r9U|q1y0^uOHQw8>} zqS_gYwJE&J;~5sV<&Y`e$3&sz+ju(xdQ6+81T?D7O^3p3>v<|EQc*nL0JQA00FEX_EHRH1JAn!0(Vu< z!s7WhE>3VlExekuN1+O2m8YycJ=+f}mTKbhPn+dABbu#r$z~?#;D=0dtPz{DMiuz* zetZtSJXb{j2`SI+zhvA%n+>}4;GZ~8aFWN33x1j-56zsQQB3P<8Cyi$SsbL^QS5NH6R*K2FJ5R+WVXbLZJ%%r;y1H3*;>L_ zV^7Z$#WwIBI8XIzYzO0*BAp+C%lR~8MssfQRFPt)O#q2cox*JaUjudYPioW2@8}O6 zriP)vTW+w0*G&R9>vtt-*REZlRHK+#-etiwsAavP`2snWsb#S!)qVuwqZ1sNQpfz zG`%2IC2X}OLO42anHeT92qt{wrZuij`-m`@rHc`%iE!oVvf{B+SFFdq0Ip3jt+yfn zygYC$l?L3pmo{_ANgJcmx&O#c>HqISfEbDS&K{BLcXZ(nG9J!8HxYiZ?JO(1^2YH-T0Y`qHnH}Jy`|){WJsA)Te=j*K2AKju3?8 zL$Uv&q+paEjMip@)^%>MOBL*L1-r)o>q-JGUkH2Dt#zJ1=YAi+odBmyv1FNGd`U;K zqI@7iEKA>P&|hv!WA4bCD|T@x902+Npu}|SEUVJ>7f3qGWJdw6j1Evx0!1@!EBF}Q zu@mqHh=u{tcpw_^UM#DB4sfzqVi!eU0tFVgrIQ7Xb=nqlmWguGn1jh^Q)hd!mBXzt{@M2kb0Kb5`H3Xb?>Tt#Pi-gO_b?X3U zoF3TDlWbLM-=S8w?Fv`w1yr(Zg;4V4jX@dU3d;|;!kXcT(8<)lmhE?mHh4M$@h^Y| z{e96&2LLw#kOzQd5a~#50dh%Yz;xPMj{mrG;(ZFJ6^~~EiCbTN0`R7rHC?ocbxTM+U4mvNeEhd2A;rJ z^(9GWV_a&x)^*14o4}W>%L|@YNPFhg$nZaPA*kFLqi+W_sh68u_<{El|EU7i$xqW5 z{3~W2==Ewt;JQtPO7uWfwWn7QA}rYg|KW5L3t2!)^YqM9z*D+2aYD&0*jCGPMY6J% zcM$6^NuI`YropA&CfrZ@FpQensj8aqYO9<`#SNN$Z2RI_I>Yu6Gcu*+3b8zlkv;xw z^-jQ=0qyqE)*G2)F5q5e8b&>T0dG&eL-h0mZbS)EU^|;0DKYi$a055Y!gxM-o##eR z?L1Ij%j)DwlG&=ElVk0g4tQ*o(6sX4riTNuJ z?DPU;!u`nK3*VLKj(SO}u=Zuz{K{&?{+BPVwodz%*RJ)}HeFm;t00IbBU8T&)Df0P z(_u{)XPaRcC)q4F|0z@4oVoMq3(F+SjWcVk+L`IEI6K^zwQN`ry)fxt}FO3h)B|?OunL~ z`Dcla^@qnBbTO@??M;TL``=pcK2)NAp}!BB_B?oW>#Tk; z#CGdgy37Uqnn0YbxTUt^Lee!fu@K3ql_t=XH4fK1?sK-tBKONw$#g^UN zFWp!>SF9M=sFIlYmm2lHt9n zRE$rgNIn)Yr~UUQ>R~S_e2j4*AjhJ#(dYrXCg58I9`5kz_otidg`*0OP%l`UKoQNQQOQz@=6Cb98JmqWKt*-gYN6I-R6yGvKgXFDG z?5%_Aq#dzpL1JKi%RDnZ<;||fJ*){g+=&JK8quy?*zbH()NqwJ1+DFtEF&{uH z{u*?XbydB5zwP8Dc+PTm2g6Ou@%IA@yV2wQBjlbzY?tq1+V$hKl1JsTsbL>-Ut7Sw z@U4`f@X{17B9laa^v@GcGcNbPY`<_Le*0+4rhoPgjz1XmQnW?dW^b zam)9K&!+Skw0E#t1W|7#m0s`DM_c0E0%IIG-1_`4SJ?+XkFB~3iTvao6ufl&lUwgE z_q7K>R;cRFCWF~Ud-4kb`B!XFS4p5GDS7D#_s>~(%KqNl497OSVkUj&_C|D{(dgdI zpSR156(42(_?5qVO*LRu7geL(ieL$p{~}3Lg`F-2y?TObr~c-1mN)1vUp^UCk)6ty z8wB59zZZnHV-%GhPbXO#NZmE4QcRDetm017?`tUNRveJ}qUT74T-tRp%%zfjAzybk z@Ik&^%8eDWaJBYkZ{@pn$bCN#UONu`8iA}2TD&*93al6(9v>0ldr?XIB)=?*l|FZH z{D#Ebxv4wM`1l}2SorG9lMmx&^A$V$Xs*VIXzIMd`vU{iUy`gR|3fkt^UAc$JD;7bQHAHn_>>oF0 z`#)7$Aw6&TTyBx*;J^`BSQO+lBlNmSmCy{WK?eZQBMFxq-B)&y{j?bA(wPM zaL^hU)mKi{>fQaR9Xun#z>|Mqd0nWe-lV8sZ)4QL)AoTaW_d+B_r7XUad9j()1aRr z?Ss?)o97>F`gE@se0p+@gxN&&3ya<7 z`Mj|YmNvz|1D~szW%_rP9a*>0GxmE&*auluk!X7*k{~oWcX}iA=-uA3U-5{kJ@Yr_ zaQG=Qg}Oug;d4KGWgP5@CTk|tGp?wA*t?;^RPcJGb~o+7l}y}Chp!Kg&DZT+oF9J6 zCW=#DlkrF)pDpmu1imEuqnm4c-`k9|W01a8oaEcYpUAB(py;wY0F9N(78H{OzWv+50f**dnQ_6MAqyH*yb~_dV{fU(>ra zX#uTn=4VO$wrEwxZ7u78AD)KC>t~O5==gSau&{sEOAd3fOIB{K?^>lS{<7KU_B5(` z-MFuKw-BN?usg4GMT%9L2f0vEXnt*Eh1VyRF3GXay=Qv4L*SH0vG>4L@s+c5R-vZK z$H;ZAw;uEm0kI+8MBan6YR0ks=S#(&R+j=#p*BISH)lI!JB@!|*_X(f*r-bVv~%g2 z=t9T$Z0IGYOS@DEHK9~)Mrpe|%e3gEMdgN-9qaW~6#Nr;sm+5tKrC?aXw0>IlL_E zaI4ZL)J1EF?8M4AtEYO!>%Eqz;h}s;;wD2@VRDAS-7|$6%~a#NUn(OTzST^XL+bZN z(mtClh>h^9*WTV0x;-($y;x$k!8$)#O;Q`EdmR!?|A{g@5zckxd5mqCR1t}7HPhio zh*aKjk6q`CUQP!0pa(CkNW$#r`nb!~?c|LIBr=m1j2+XQpMze|a&7;r+QX;_qq;ruOr?{X#CUzKk?Z*nY_ZOJ3k0rV-z0)WtLTdsIrcV#Yn0sy=6a3pJ3Pg znP8>~-^#GfoH?SvmOpu1rh3V0y!%en_?;6hyJGPkF2x`b{WNyh>1Kl}CZ*gvmT0r0 zKyS{`5XtNMT$RFs_oyNFX*>YMO)U-J~`D zu6=@=8Czv@Z&yRjlW=a`WLs7yYg$F$=7sVYe>1U4Ro?vuxe>vCMMdbX`N<51*7?(0+yW>k0Ssl!8MNhkXM>=`MHmQlWe&PeG%1@~I6GrLX7LUB|v8?&>kP@yPZ;*G%1w!_Tj+ zrMMaHm(sXjVW=CoqiCZwB)ytLZ^gE9ndJum8GGYx{-*0>#mO&{#Y~*=)G@RglQ)I+ z7=}p?M@*1RE^3jhnYno@B{$bCk&dP5p6t5lo-vo@XX?o#;?K^+4UNUi_2k^1xjg>- z>}RXlS1oa4@it2qT?3{x3wWTDZx?6i$X3YpZjo+jr$8;u#Qu+gumFuggrRlfkJVkR zh_Hh@NoIvhKVN?cz8;FF`!{$$?uO*e8MX}7uJ_W>M@Rww`DHQcE{<+y7V!x=p zpe}1Wd!bvO*b^OB`{iL4306SwC1>$fp{OKT<-5Tb)MI| zH^ZZ=hE5$EDw*$Sf`c}G1U}yitibRcI9Zqp@>UkHrm3gxRi(){JTPC6Kq6iSn#)OC zZ}Oj(G}XL+c=y$r#4Q8w>u1xRgVP@~cr*S@S?`of>>EDsWm(`wLHjG)cKYp|4#?#K zBhzLs@4k|;d-R~q;8XZSrBd|$4?*%j=<0t)w$Ob< znm^$EX83s}+4|)$Gj21j z?mUHT5qim@y5-jqYLHtI*9srrkit6!XZ@)OpmKuYROV40u4*xTV+@LR5Z@1acXRgM zlkwBC>M-7#`yd~_-zqw!nEhiS)Q?2U_;SZ%>7hru5A+rr#or45n0TR3xOl&BT;Wd3 zPUdjwxSAj=IX!}67xQFESp8!Awf09&FO;vzxSFt|npw6To|OEBG1@5P0jGj~@FAtP zkKqAbakKAkemdP<)&hOzph}mFtXSPA7N5*Uwb!LrIsA(^F0XVmmaVk2?h&+_cCna} zAkkas5l9{_Z^d7DYEgB|@TcVP0IFug<8b&{@_UOyhB31HHwUu(kWp{Sz8{WXr4v`A z$ySRGYe^TA?v>LBeyv0L!dXliiZdD}9b#T=s})&MU%tcgG>QG`8;Wx7z0d5KE(ITJ zw0}64FzsJ9lAL<`73)nz2*;@EOX}Lh=lUK6iI3EeA6P!X7)})jT&nt{ zxc9-bLi?@WD6^M%6Cyon`BAmwMB*m~sW|)8q}cFWr1PJN_I>le){Jg{xo*ypTaO~T@|B$EiZg^Up%W#3osll=(1)*_9)85pmI`QEbX2yvHFsQXLVM@_FgrF(mKc$q@mp*!o8J4?Fs)_! zCxP#R{*mC}_cs@<9WNe8zOH5@A3tV^6ZmxeEYzzw{_DFTD$C^T9+a*oTVh9{nyQ!y zPwJ}Wsf&{URlCVRdzQ1@WtZM7J_r0zEnb$~m{JDvIEi%i@Nmq&z~z3O{y)qlyeqd* z5f2sazAkmY$@N{NiRJ}~S{<%Q!H!($R?-cLJC5ac?24GoFU_wTx&o)7)zgI{CK+O0 z=Qvl|e_rR6AYWbk!1!AzINW#37-?$kV4mowa{rotSCGz>;?<&j*UL58$NvK_K+wN! z=oMVk{Cm~KPvVtDNi0*!KJ)`obf6;2_&C*<#XkEIGl?XN~MJ;{U8+Y&&}aO5)SU;2kTG4R`Y@PKJ<4l6+Q^{wXtwxx1dt6$QA(Ds zgLo-wV(RvviG~p-2RspsE=`1CmP}<`*38yS;y_p6#ipi-8VWL%s!9BRezye_=dY@Q z4t7tA^?}F9JnGJzY8lDU#NtOY&e65yHtRKICugz)dvO|Km#zDTKFN$_pJ{dXE)6p?%=rPXsxu1mF!yHQ4zX@NQC?FdGw2=8sJQP>x)OBzmPKD z6zV`MA4jEFl1sV+wY3F8%f_yqX~q2eY4whj-(uY?DD+wE%5x9(Z7KMY})ly7q8F01kz77@E`37@Lc;u~a@*C#yB#t*I0xJIUdxffxG zQ{QC6dUaz`iF?D6;)mlo9?^;;qI9@E#H?s2eDge+RMjd+Y4E*Yv=WXDG5EO*xy=3PXKCtus5Mz>=n@Sxb>peo6UEO%(Ze?O@}j=vlFd;;Y35RzvA?Q|yRFTD8o zixAxc)Eb)Wc0u#^;e2G$r8P1s)1N|#;tJ{#UvJ_7=`fZ1R@^lI_ zWJrK3maNN>t6Xsp*F8n9zRZb<6k>oVmnl~~KB6NC^8=R@v&Z^LFY7b1>8%cSlZ56h zy7^2|u%LzkkB0>dV7wB!nnHJE8{iA{p{g^cjMJUm+*H5_ z`#Q5^cfioZMt}6{+>t!E%goQO%Sz7szX6!a=_q&#@3Ch5CKSM`LGST|5=Z*KFz@_8 zaU|)uzF<{ihd8~jM|*j3x}^YGOIjN10}t;R;V>D5DXQwO3E)iDR&$d86LX(WnQPD~ z_HJvMtsPDx@nlxsRg?{s%!#s*@%tOXpYZ-@0xh843u9PA6B}y(3`0d2>+4&C4i#G( zMx1Toj5cpyh;^3-dJeT_l;xq;TvP>6lRTsfM%ww-CA9O&T%Xp=zcxt z4i)|e+f=L2+YeD;as!&s(o#RcBC!OM#qw>j`ItCuqg%9#AqTAd7-uroRW_ANFi4Zm zh+F6srszuRe63)(|2~|HEh59e_~EE+gQk$8lc!eHkZ!(HZS}f-e&@5Qh~oiKZD%Lv z15XhRrBd?O=jINcuXb!N%5UW3a8Ho`i=&xyBSzEI-lW4|)W#3;3N|B_-NW;Z)!*F9$Q0>&h0Tmh8ILOe<_6l?G!!ZdV-`@hed7J53{fxUitA{U`LX zOatM&^|5^abRSEulZT^g;}c{ppT^DozL(`=IWz2Hxh#D=x%z1?mN7^s5@8ZhBf4{J zjMa&pf*r>DU#GC>aoopJw8_T3ESIl0r!Zogi)EA)6P4z%F-i>kSBls&`D5`gy>b7_ zx0(BRqJQO3CRe>8mlLq6(hev?6UlqUQgt~pHM#0(?iJKN`@2`pqGFjSQ-`u~dx4uQ zHYMpt*-SHXH18D${uS@^sDC9BDipd29+oTVk0(=Os*7cm9Fyg0j2grKl@W|j^2zw# z1pmq;!5Z>=yhK8^sw>Bh9f} zW3WuCaw?E-6qy4Nr154HNvQa?u{&>M^`ID+lj+m zoa>wF@XWv;$S&_qE*pl+MUugs`wG$CJ26V)Qx6J6A`nwS3F**;?5o3LrZs@b9{C#G&FA0LZQ2Z#F zgrgu7*34nsx>>k?ulAL@sz>G+rZzm9OUrrm&y-c3SU2b$ubKX_L6x&b7?}&`;}**9X5w!V#Yc)KC3~0D*yIKVeB#z zp{+xg75z?xJy?7AvM~OCmep4v=s5lIIGH_4{P3R86zngIQ=h}$g@?aw);>lS^xi_Pb29`1v&$kwkp!DR}R5F#ctMdGK_%a4rnup(wL4 z4hvV~9On=)z5eJphqo$}HLjc!{vt*Z@;R^pboD$i{hKUi7XZUWEEm+lh5F3_pw<^u z`6+B9aHzAscx})vuVs3g^Q#8!=I~(t1ZVhNTyBJBe69dMVpiEwBV2Jq_`Hf{-mMte zpzppL>18N)n_hP7B`=|}=F+=iWM*pjZ-4+By0pG7=>~}K#{Fm(4erXWBg=R*v*U%o zCz7zqwJ;k~uu$TDkHwm2Q^!0qyP1ZZr{U-<(!Rq2PhrIP_tmxIhigaID}kCgOY8CC zMkjVHN=u^T8@NgqL;gh9imUH;tFBjZf4+9GTw9-Aze@E)d3~w2R4z5w>Xh!dnlW>D z#xxA875HH|ACgjLXTkVf2!$F@a8{y;E3HZW&PkC*{iNrT&hBi}tEg(lYtH6pD?2;w zR*S57%3NikS(#HjJZmn%*&p5(hPUAo5~)yj2lG*c9al=|taMW9^w$WTC3#(NJFV_(;1$j=_&0Mxy42!cwf-Y8WR+g2*2MxC8KodGp8&ccjx81u(1=b`m8 z%?Z*Td%JGT(vp4Li(6jI7G3Ouk*x7CSc^S~-FECfWzyaBX&T>8p*~Ys5LSefxMHk7 zh$N2CS&&5-vOIRI_e+>%)TY=5Fi|V-p`daFxZd2~7$e zl}OF)R!yaf64h#vqENNgI-6S1J8TLwU5i0keC@n&NVrZo!&Zs$DAxkm(dZZj^X{ar zvy*o0e2rkXh6%d$t%Os92Lxv{S|zv0%iBe~I6`;`&jp~+wxhXtez^|BsFCIQ5a{5U zVP&P_n~$4*W#u!q)(~3rnR1b@Ig%3P!;B2-5Mek)%qkT0AS$T`;RMmo@);nHH^E-K zLwFU=66NSM`;5mlLxKf1Z)MAR*!t8f;yOchCj_>~n&w%dS_1S+YG`?y7G0(g?4k_B zrfh46EKfHK-Lnp9wrs|iDG^$}{*%kYON3Vl4+)P5@BVINBFO}UFP`qCYg%yOXhBM7 zK|oOFvgM?BuOD$zcP>qAq5&~O%7_`~LbQ`g(8fw7aFA{nbSUAn@eyILv)K&+F2F(s^+2!>-4wQ2(GxqxrJ2R zIEmXdX?OYwg)jCK&Lrr3GA^x>Q8sbG+jc;dG*g!yRdO|KYjw?)R7cj?eH+Cuz;+j& zqnhFTibi$E;S2z6#W=vm;~5LiAIU{gp@~98SuSb%p;E*fU{pG!Yb9A0sgh_iqb5NY z1(0n`*JeP-^?LXKG6D<=Sw>FCGEtj3E0}CD`em~DG8l1upYTTEhptpM>tm7V$+`yHNxOU{hyUz@WijGkN8qJM4_OTm! zu^YEgoIcxb^P8tM?83E2u;8nijk=xLoobGw3wG00&=OxNJeZHTCreCDfdrQ%a?W>h z3Q){C2_L;8efm+sNrIk$hAAFhu{h9m9ReXno5Oi^BD`R{e(FX32magoj4GDjmE!Q@_g-i__oD~|Gd zJ9gj4?ku6-IDNXrz9o#na)^y#0D^Srmd2m5>D4suEOjZT{>s>UJTPA_%P%*B$G!MV z=$T{{NCQw*X>kH5;sDST6e)+JF08VV0D>@#drp>(L4K8Vn!6coAaJyq^88B@mOlZW zA48k-y&2TH^75A}I6O8p`H(2fwRIJnXK!ME-`gBb2h-=d6njlvxy)>? z6NIm@W#cVO-;ktpW?yz)&;9zqLH;V;Gy^jtQLF6gnjIY|k;rfjgId=vRjQTh(lfV& zVY`LxX4i`%?>gOuVWb@duI0cW$SHfiqiUL?`|FLZ#=vI8@%DnS%yPTk$s>#Q0kNMh zU`yl5}a(>|oYnxO?pa@ek$T{E9Z`IMJ3_{z!Roxi)LX zF?sKH?KOpZZ?I1XQ52Lq&f!z*_JMO7Lv-djPkAOGT)CSkRHf^<+PdFN7gG0=Zf8HL zzD!ce=2ql5ea|Pm<%1-St=Zc0<^(D}CmWp-f_3_Iqqco|W8>Tbd;Qc)rcrJHFVDMh zRJdu+Okx=o2bsH8Q|C*G=k4kjDSF!Q4EU3*z=FTI9LRT-J7uuXG&5?(U`VOjeL0Q) zC#vg?t{>qmZ{J-2_D5V44NVn^XdAZY*`@`js&;)weKp4gJ$Ng^5#cnhyX_Bh{HF=& z@_cmtbkVI!vy;nW%ge*ErUDjmGXgBARxTmbhN0<*uJwsM8TGxx$lwZoK*n-|>kxlO z-!#~=;#cp-!6FY$=1uDY7qh%6Z0>T6H0c-zc?JRyNo)$-Q{)n!(%^rCdJW%rtxcRk zdw4_O>b3+35z*1z;1)e@S6hkxV}Prvo0etJ)zxrQQ!|k zItv^+hB-Dytw5si{U3XrF0;4-3!YtXM zW&%#enF*{o+W`1pzPc)v0y`*a)OqU)rM{(G2FLBT{b-Nw*>LLi>knlREi;%;>_O8g2X3on z1p4<*A!X4weF(;xgD96wUUSLljV008Y}r4ol_5?ik` zZQC>~5)E!f#3Hl+-YvfCc)qENUQ{nTkVL8kLq`Aoc{%Qaj+m{vWoQSO)|)d&E9v9CpPS#~0tUSQO+eiV}=vpx#b%4NB@ z`>CDyTb}2-e=*PyuZYT?6SziT0*_;`xEx>C&615*cPv%lXVg;kL(g_)Su&^wwpJLr zcqOW~uB%QUa$|9z)37(WMz|Sm#nI%3qqp<)KW?i3-F z3vH;zXHELOf!Q$LezQ(^BL+Yj(0}ce9r*j7^NRJ#Y6bp&wA!v#NTu>&P?4Zf;P8P$ z&94V_iQ1)Bd+E7*?kTio3T=57;J`g9x_w5DqzF*~f_(=f)pi9Ss6NL5iaDTj6WjDX z_ngcjYUdE&cxi2WmhEdWrMHL9mLW0R+yCllPyY~ywS9Bm)BnbBHy;9wL;bu`kl$J0 zT@T04t$k=hQ<`=sS^$F(tO9ZVbxOvc8tL+%pG=(3BAi1Vej$#C_wC0sFUinIc}fR} zXi$_i1~(&RcR;p3(^*oi0Fz<`EGd?5+4lF5Fs#KM34(yQaV@-%Q}JQUhgD*HE@gdP z5Zrq14){4I4E5bvhT=VYXWAbIZ9kd(E!&y|@teY7h<|4SAAZUW#(-bHH3fZI0~d<% zP!!tuN5#7~-snGDZ`aR;S2J(O)xpexnZQCn$vTTDs7spoP4wC7 zy8bi*`ivgT1i{Q((fhI{tn-_1bdV1DZY%LDjPk;M$wSs=!`^cX@}s%>)!0|u}6 zbof*uhjT`w&OS6MWI7xt&x065z*g=~qRe|>)CqsW5KSy05|-FLA!Cth`;+6rw6+~t zU7JFQ^Agsn{>!~6Fvy*OxtQyP?2D7C-yN-qR3;WaEPt2_Ynk;hV+9U)zr|vpX&YAq zZG5dz#ba1!s8>s(<;>1HmRPD@7_M!b!|<5y&-hWP6v4+3osqXKPUq>|O?nwrogq-h zIlXp)IRwuSfi#Kf|KTa5@gu`vjmTVoADPQTaE2!|&?Fm&?1-W%b(F(8oHS568k699 zE&A8%AR6`TWLPdSbJ-E$+H{q8nm-|%Vdmj*y>vXjznt#MDI^2fNc-gFp6pKPzO$@8_gLL`;I4^?DQ zBSeykCaLIWRwZ($Hd~TZMRp=pvXocq#}}&yE0u%Q#pAjm%AyEkBVyPZF7+a!rF(Tn zC2;=}K_cPQvS+D#gbnPYx*d||1hpFdIh+KvfL??;Wg-$PFI&&RYAT#vYz7EtO?S2Q^9UzB! z=uVJb+nlLWh3L^qTvVsf`ivPLsV0)x?uMcmcH5$qRF9+>JF27+%sGd--6-K0Cq~JT zH6q!%B!0&>WydjX&p!x1zGs_`Bb)!K17xT!h`tDa3soRR2T4IxrS9pLNF+%#HQRvV zfuJH$#Lr7w$(4v?2GW2QOb#s=!QVV0iT%>PNS|Z_VXk%<-e5DJTmrXu7nVxR#b#;g zUAbsZL{mux_&uU)$cicj6$!%`&a0bEo_4Ug`O;KOrz2)$67A_OeqE8OJ}BXV%<{EK z!Pxq`q~Goom(%^DO24Gi!fK}PywDPaO^%;ubd>TM52YG3QRLeJOT=!>6u3HmFaq*t*bFvI@}Fn3sQ3I3`>t z+yb(CpYST-HR$VP$<18}6Jl+hWGll_&r{5e1!pu({<)E)H!zDo7-5z<}+wQpCzCCv55BXOY2%MhXnbDFFxWTC>rbJ|sJ@8C4 zk-+IyMqu^@qI+I^d+e{i`u00+b8e6PL-X$2$BEtGlq?Ss`wje~EHUf7%wK7wSLrkU z1wqi$*!mUd={v$fpl}yxd{j7zmQDJi{6qizwsS$a7UF*xTzug>|5YI(S=m3)Tzr%ToX?X+5F+wHSl z!jPW3#SH-pVz~VnQ1wDEaFn0R#cq2biy4eu271EPK=FIAFAOm(kgX^=LE_m#)OkKE z%G3@}xXq&kH@13gqm1mlc%PrMV3FeeS3u_{iidycFxyO{H=jniJ(C8!&6jx#T_b#3 zfK}d@aSaAZKj8%uNusPtx7~(&XGr%lt#u!cug)*Ps-bg=6jU0GIjG^+C|2He)R^aK(M5c)7R9Jo~T{R zGy8svsL%10Zp++@vov%iwfQ9}ivz;3Sh>4!fO;1@y;l-HaTf+m-qjAn?JJ=noDS(2 zl&@QH%@`XAG&9jpc%0$ML8xU1?Ts=1bL_+JXRA%IX?qN zaMNM})Jp}-!aVE5@XT$l`ghXA?8MB32Ab^KG12qevGuC=a*^7hyfyK*#?Q6~cZ&1) zRhD<@fN-1eJ*@wj4ENytIO$AmVClYFYl8-cLX>p-J0mC@VPPKTZPI81nm~h7bDy3& zKLMA**)NL4CNxHk$IqP`?3q**=GY$YliI+10c@!=pQ7`IF(|o0Mc|Isi3WeluYj>t z9)%*S|Kk7m$RmoX4#Ti|NiZ~X`D)U=;8>~$85npr9h84OhoC5roI}?0SocH1MIi>7 ztP9t}c<)v={!R0wp}RWGMt}nh+NHVR(`J@Q9)@;Fvp-lkLDQxH{VR+NLEFX&;MLoR ze?<~W)PnKZ10q!irysl{IEidrVOt7&hw6r6l|Q4-;k|BfJ>HwIOQNOS=2@2a-$hlr z-c(*MN$DqPgr;^gn*`W#bZo%BD z+!4WoPH-Z8Rm51(4NTF`_Ku6XJdy=xnO4P3ywCOuiD|PG_xUa&>ne@ZsN2RJd0y(2 ze9g9e-weyvy?2_9qEW4VP_bZu5q(>&7`=d}6At%jN&TDI#~U0EWpQdX(0Q5h^E za!kDD=9`~ajKFpRRjGP*WUIfnV^}cMAqQ_2RhcS|-PJ6$92=#|T%{zdPV9J&=3E19 zOOX{(5uG!^z^8y~!&S`I#x_ta#bN3>LFWnE@noKDWC94|ba~WNbVFC>4oV6&ETUQl zRiuM44BAMd>MH(iE;yChq@nALWVYhYZ?e4>{*G*rSwR<2kKpW9H!T#mT^X)0VX8Y# z2#+Is`l?@JwUBzLnpUn*>nG#6=r!n1B_%wzwMH^maVXsasu&9V(arhN>~h>hwp-|O zC6TDB={#2ok1resJL8%HJROSL;G%Zmn=&FuuGnXr4zNOhlPZcRE>vHuY8PK%Xr>k(7zlNC%^&HCA{jQi8m;+=M6((cE6L%=-QrmLTCkMv&u1^A0{SuT zmI|^lLhB|vN;ffqTepM$QIH~TU5xABk?WA50chKl+Li=EKF`t1DHg>ibCRw(Rzy5= zh`djwsH^g~@f*jp}zU0xb>; z-w-y1Bf>G^6j%=T73Onsj9A#1HQ8dh`ayI$6xSW$9sy#)Hf&5N5CsjKc87M_j)?x# zKC?L3wgT`a?sDEyWSmZuZ>2<$7$lbJMoT5Db+9UXdPh>)Qnfi3$mOQ*0o&@jBS-$s zv6@5;#f)9ijN$<3r%InSNKh|pR@DKuVMt$NE8g{3l;OiKYi{RYqBU1s_kQQ>h~Bnk>m8A);LI4U^K6*D(zd>_|zrm7j*U4ad+u zVu)%3x-(t;Lsb^VzN|>1q(E0^s0vjHNJy>cR39OvC8K*@2K!UigF1zB%rXVTUIhsR z1-dAiKxyMEwhoO4%2Nhoj4Io6WaygyC{wN{$@Pac8-`Gd|1{Gg20uQh;|HQM@Qs`lPQ!@$G0?uBD6CEE4m9!X z(0c1p^ah3=?(*3mPz8tMC>cPVPBHnF3uaP}#TsH(gKWJTI=NV>G)l5L$zCTv+hz^C z%}_@IF;e72Vpm8gP#JAiHrkrzDdd*)f#~fJ#nZGFd;69aYyRYx9X3GTcKg5gh>r6Y>L$(X4{v2N!$Bx;0 zc<2L77Js`2E$v>`(gyo+j-KO+sge5~R7Q@NsBs!rZ~|=;yv28=W6K6l5S9w#xzx2b zc6cs-`W0w1nxa!ebX}zy#Tl*@31C-rRWsNfS$&>+g|_(zMlBF@2W@kA&}&2t-GP>B zTAGP^LK?b(4&N)meZo2BKuwrgo`yASu9D)tRl@HLkY|Xdcn_Vir@kx?Bf0_xc6vi4 zlTk;ECnApX%VUVAw&r(0%dLR5t$@9W``ut(i#4&I^b(rT9_=I>s9LdqZL@s`nFadO z7(ZLx@|JJycF!F2u4^V$+i~n_azj$FUDvK8->8%ytdwh8?(%DI?QWiV?Xvqy%bjih zKy%i$@)Lx?F8FzI$DJcq_|PfQQcxHr4uUn!g4PX9ss58{EC1$mj7C4!ihFWt$%JQ^H?X z<;U=i$7J;}o-{|^<=*S8-gbIOH&j*^xSLx}z1{q#JoK^GD+}o!w(~=;rh8kh5HEGZ&% zl9KwIqKZ_3nj=YyFoivZ`_HKo+!I+BDCYI+Y@Hrf7U9mWolAq|$zW-AZm!Wz^!U+%8>2J-l80gVJ&Y$IL$#vz`uU7PyX5OnP_nO)t zNNE@+1}treM>tTbytyf>3YhowZ&zh`^>4Wkw}^jz68;6HUqtt9PJ76-Um zV973zL~8DhW+6cH>WLVBfj7!~_rQ!4Xf1@18eEiR< z{)P)k(^%!Pjzi_0*CJmu&1%&&ML*Jq%KrBMqB#}Uhab1>4#|Wq%&?U}L*?#GsNJE8 zzHcI}{-jV}dpg02ajux0r!J{SP zZo<6qa0X!FzIK>g0XN0y_BZ-_3)e>{gD4FkeAPr+|M{Mfp4y|$7HPaRk;Xg>754#3 zSo-WN4}XEO-^-&rF{AWQq~|a>e-9H=L@}nY;PIU-@KlTobgV*a+@2hDigOyB_U7L7 z8;>e5K8_I3B zDf+VFo99@CvZ=8pC0`rVqJy&h-&IADzK-<_>wwh>HT8>_bl7weQ^;FPAs4F!%x+MW z8%*u{KcbnkqLbJ=XZpkS|Bb2r4kGzGn%Oex*Ck0&zXsn==UFI=<(?A`2#aatZkI3E z_fvfnWlbgABK$4$qq~UjYHiAxb!69h}PSYr|IHGuod*Sgf zz#D!3Y=(5^BR-AT>lceZfgyne3@TkSFMie3zNvnlM=Mk&$IM2J|e`cvd8mM66FrI)aUB34rSL${6i3&obDQ1WrL$(%-MCb@IAu! z3a=G@80h|fmJ1=>`Fud#l#n^SI|VZ-$w*1__ZQec-E7xb{wT>xplP_|Rwu8(R?(|vxh26oRS~mWJu}y!`N3Lx#cu6L{D+GfY`u*_i{3|IGF>^lTR>iat0tr z|1(i>SL8G{j2{hNzQeCVe*e*wtX-_4Qy(F=oL9|Q@+@QJb6CZ5jGf!t+dGd9)=gke zU0mhX!Wk2`+%+oU3goTc=0P&F&A5n(xWp#q@2Hf`m#EE0<{fvw(e(Z1!l6>L1b@43 zJu=Ox?!M<#T=7gVY*c<>%{G%8Y`gL)d=CF+TyuBbT5Mi;G7hYgD2kCAm0>LN-$4%@ z2AGyX7ETrS9biUAcVk9$q*ZYXcTs_!J$9MqQkx@oP^U3e3<_By~;IiApTRiXUv$E3=kciMHZ~iipey(4nugvpQGuwj?&LJXP9)>wAgN|bJ%rG~+lWEAePMc&O0 z-%*~q8Pi?n$L17Xado8;0v#*ysR|?Z0#N%WQbML5JIVZfvWthEGEfreS+auoI!5+x z#kSu)coqJhOW%b;!FFWj;#b2*gGV2I^h1y0IjKC# z&L4dg_h(Ma&_SR2Ld13q$Jo9slJrJlhefEoRCqaP)$bP`5*|)l_y>hg2tOe_Dg3PP zi^AuG&kMgSd{KB>_zGzLW|n{^DgMK)b@**Y>rpcNjAh@5x(a;sQ`o1TcQMt@I{Zc$ zPnZ{Sg!GP(<`EJd!4$oP!t>X=N?HUiyqbCr3L^+~osa+;2K)s9|2x1hbv+>D;y;E@ z1doOn|9a@->pHq1^;-75-q6>u$cujkTzCS%F!aG#vI6DmMu1QwCKiOyD$InmrPxk4Dm&xl_2>0jwew*-vjOR}X9}zw-d`kFv;j_ZO68<%C`+qF2 zd-Ky7RXpd(j-cF2f+0#@j;@f=UrpQ7I42qB4oobMRduCIp2pMz41QLE!6Z!A(+eyf z+1mg6tU_zdCkjgljiUWf`mCiExx-n+0y&P+(Iq%A#BhrUyW!$j|6yN2W$NoduFZN=OoluzxjGW# z_Rx6t-_iWhWBH^5$b~pRhH}lB0BNNW{KHQg|P3o($ z4QKsz)`l}nYTR;u|D?X!kLLHVegEmkJXdHwqb7M#2SWRr&tcg6?ngrV8qMkY;{!sY$ z!q_{_^y+2__!P{u$f5!1i@?A9M@Pn5`c*75GY$t{0tp4&v7XL0pIT zhe}y*GO_J~*bbLIcwb4&=tFr^&p9mc_9emI%U)+P)?-3-0A&QFj9t}GD)fv0d6Go` z6&KrP_O(HQLLDw}2EP2d(j#S6UO&%c+Q zbh8s&%ix;kp|GCFpOoWTN%U;n6HB!?zqGtH!;wBIIR^iDj(_F<<{y8`KS%|St{FIy z>^UPPWS3H89T=1YADjG37x)MN8^jZ?uzW$YxjiO?EK^=HRgi3kq9G2(y10A<6ZKKJ z=)fyyadG9jvuu&&xpw=pZTQ*61EDRr&mV^P=v=$SpTJ?Tc7dVje-$lNE1BnpJgLa~p?oq)(V3<9$MZ$~MxM(BKfpPhBR6 zd7HZeo!cMT^fuf3^F`OWlUrOC56Wei!9GM^nr=v1+#Ql*H$$S%$R@*Co4ah?zlVOA zj%}eYrm3zQ>x<*z_LgDhuzgk8p4AwPIn?s@P#Bj5dd{Z_igA*yGun@&tK5e)_k^~` z!bkSDb<~2X^UX^#bq4(i&Z$r8i?fYMhx_96B^36dc6SMe&gBC*)b1|7ueiVP4 zr>P41qSzmtUcI`i()Ewa^2gU{+RpR(T9;B^hj#j7buK=9h}G#meCXlH^&VIY@_N

2+UrCZlNAp`)&G@jg{m-!Dn; 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πR(XEyYV3az{Ot$Y*f93mYq^Lnu{qbYp!X!TA9&! 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 F?~0aZ)an2L literal 0 HcmV?d00001 diff --git a/site_libs/bootstrap/bootstrap.min.css b/site_libs/bootstrap/bootstrap.min.css new file mode 100644 index 00000000..2ff60158 --- /dev/null +++ b/site_libs/bootstrap/bootstrap.min.css @@ -0,0 +1,12 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import"https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2780e3;--bs-indigo: #6610f2;--bs-purple: #613d7c;--bs-pink: #e83e8c;--bs-red: #ff0039;--bs-orange: #f0ad4e;--bs-yellow: #ff7518;--bs-green: #3fb618;--bs-teal: #20c997;--bs-cyan: #9954bb;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #343a40;--bs-primary: #2780e3;--bs-secondary: #343a40;--bs-success: #3fb618;--bs-info: #9954bb;--bs-warning: #ff7518;--bs-danger: #ff0039;--bs-light: #f8f9fa;--bs-dark: #343a40;--bs-default-rgb: 52, 58, 64;--bs-primary-rgb: 39, 128, 227;--bs-secondary-rgb: 52, 58, 64;--bs-success-rgb: 63, 182, 24;--bs-info-rgb: 153, 84, 187;--bs-warning-rgb: 255, 117, 24;--bs-danger-rgb: 255, 0, 57;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 52, 58, 64;--bs-primary-text-emphasis: #10335b;--bs-secondary-text-emphasis: #15171a;--bs-success-text-emphasis: #19490a;--bs-info-text-emphasis: #3d224b;--bs-warning-text-emphasis: #662f0a;--bs-danger-text-emphasis: #660017;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #d4e6f9;--bs-secondary-bg-subtle: #d6d8d9;--bs-success-bg-subtle: #d9f0d1;--bs-info-bg-subtle: #ebddf1;--bs-warning-bg-subtle: #ffe3d1;--bs-danger-bg-subtle: #ffccd7;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #a9ccf4;--bs-secondary-border-subtle: #aeb0b3;--bs-success-border-subtle: #b2e2a3;--bs-info-border-subtle: #d6bbe4;--bs-warning-border-subtle: #ffc8a3;--bs-danger-border-subtle: #ff99b0;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #343a40;--bs-body-color-rgb: 52, 58, 64;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(52, 58, 64, 0.75);--bs-secondary-color-rgb: 52, 58, 64;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(52, 58, 64, 0.5);--bs-tertiary-color-rgb: 52, 58, 64;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #2761e3;--bs-link-color-rgb: 39, 97, 227;--bs-link-decoration: underline;--bs-link-hover-color: #1f4eb6;--bs-link-hover-color-rgb: 31, 78, 182;--bs-code-color: #7d12ba;--bs-highlight-bg: #ffe3d1;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(39, 128, 227, 0.25);--bs-form-valid-color: #3fb618;--bs-form-valid-border-color: #3fb618;--bs-form-invalid-color: #ff0039;--bs-form-invalid-border-color: #ff0039}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #7db3ee;--bs-secondary-text-emphasis: #85898c;--bs-success-text-emphasis: #8cd374;--bs-info-text-emphasis: #c298d6;--bs-warning-text-emphasis: #ffac74;--bs-danger-text-emphasis: #ff6688;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #081a2d;--bs-secondary-bg-subtle: #0a0c0d;--bs-success-bg-subtle: #0d2405;--bs-info-bg-subtle: #1f1125;--bs-warning-bg-subtle: #331705;--bs-danger-bg-subtle: #33000b;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #174d88;--bs-secondary-border-subtle: #1f2326;--bs-success-border-subtle: #266d0e;--bs-info-border-subtle: #5c3270;--bs-warning-border-subtle: #99460e;--bs-danger-border-subtle: #990022;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #7db3ee;--bs-link-hover-color: #97c2f1;--bs-link-color-rgb: 125, 179, 238;--bs-link-hover-color-rgb: 151, 194, 241;--bs-code-color: white;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #8cd374;--bs-form-valid-border-color: #8cd374;--bs-form-invalid-color: #ff6688;--bs-form-invalid-border-color: #ff6688}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6)}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#343a40}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(52,58,64,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(52,58,64,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #343a40;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #343a40;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #343a40;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #343a40;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #b2bac1}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #d4e6f9;--bs-table-border-color: #bfcfe0;--bs-table-striped-bg: #c9dbed;--bs-table-striped-color: #000;--bs-table-active-bg: #bfcfe0;--bs-table-active-color: #000;--bs-table-hover-bg: #c4d5e6;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #d6d8d9;--bs-table-border-color: #c1c2c3;--bs-table-striped-bg: #cbcdce;--bs-table-striped-color: #000;--bs-table-active-bg: #c1c2c3;--bs-table-active-color: #000;--bs-table-hover-bg: #c6c8c9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d9f0d1;--bs-table-border-color: #c3d8bc;--bs-table-striped-bg: #cee4c7;--bs-table-striped-color: #000;--bs-table-active-bg: #c3d8bc;--bs-table-active-color: #000;--bs-table-hover-bg: #c9dec1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #ebddf1;--bs-table-border-color: #d4c7d9;--bs-table-striped-bg: #dfd2e5;--bs-table-striped-color: #000;--bs-table-active-bg: #d4c7d9;--bs-table-active-color: #000;--bs-table-hover-bg: #d9ccdf;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #ffe3d1;--bs-table-border-color: #e6ccbc;--bs-table-striped-bg: #f2d8c7;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ccbc;--bs-table-active-color: #000;--bs-table-hover-bg: #ecd2c1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #ffccd7;--bs-table-border-color: #e6b8c2;--bs-table-striped-bg: #f2c2cc;--bs-table-striped-color: #000;--bs-table-active-bg: #e6b8c2;--bs-table-active-color: #000;--bs-table-hover-bg: #ecbdc7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #343a40;--bs-table-border-color: #484e53;--bs-table-striped-bg: #3e444a;--bs-table-striped-color: #fff;--bs-table-active-bg: #484e53;--bs-table-active-color: #fff;--bs-table-hover-bg: #43494e;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(52,58,64,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#343a40;background-color:#fff;border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(52,58,64,.75);opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#343a40;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e9ecef}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#343a40;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important}.form-control-color::-webkit-color-swatch{border:0 !important}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #343a40}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2780e3;border-color:#2780e3}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2780e3;border-color:#2780e3;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2393c0f1'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bed9f7}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#bed9f7}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(52,58,64,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(52,58,64,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#e9ecef}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1)}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3fb618}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#3fb618}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3fb618;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3fb618}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3fb618}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3fb618}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3fb618}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#ff0039}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#ff0039}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#ff0039;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#ff0039}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#ff0039}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#ff0039}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#ff0039}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #343a40;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #216dc1;--bs-btn-hover-border-color: #1f66b6;--bs-btn-focus-shadow-rgb: 71, 147, 231;--bs-btn-active-color: #fff;--bs-btn-active-bg: #1f66b6;--bs-btn-active-border-color: #1d60aa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2780e3;--bs-btn-disabled-border-color: #2780e3}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #369b14;--bs-btn-hover-border-color: #329213;--bs-btn-focus-shadow-rgb: 92, 193, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #329213;--bs-btn-active-border-color: #2f8912;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3fb618;--bs-btn-disabled-border-color: #3fb618}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #82479f;--bs-btn-hover-border-color: #7a4396;--bs-btn-focus-shadow-rgb: 168, 110, 197;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a4396;--bs-btn-active-border-color: #733f8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #9954bb;--bs-btn-disabled-border-color: #9954bb}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d96314;--bs-btn-hover-border-color: #cc5e13;--bs-btn-focus-shadow-rgb: 255, 138, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc5e13;--bs-btn-active-border-color: #bf5812;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff7518;--bs-btn-disabled-border-color: #ff7518}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d90030;--bs-btn-hover-border-color: #cc002e;--bs-btn-focus-shadow-rgb: 255, 38, 87;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc002e;--bs-btn-active-border-color: #bf002b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff0039;--bs-btn-disabled-border-color: #ff0039}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-outline-default{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2780e3;--bs-btn-hover-border-color: #2780e3;--bs-btn-focus-shadow-rgb: 39, 128, 227;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2780e3;--bs-btn-active-border-color: #2780e3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2780e3;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2780e3;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3fb618;--bs-btn-hover-border-color: #3fb618;--bs-btn-focus-shadow-rgb: 63, 182, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3fb618;--bs-btn-active-border-color: #3fb618;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3fb618;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3fb618;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #9954bb;--bs-btn-hover-border-color: #9954bb;--bs-btn-focus-shadow-rgb: 153, 84, 187;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9954bb;--bs-btn-active-border-color: #9954bb;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #9954bb;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #9954bb;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff7518;--bs-btn-hover-border-color: #ff7518;--bs-btn-focus-shadow-rgb: 255, 117, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff7518;--bs-btn-active-border-color: #ff7518;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff7518;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff7518;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff0039;--bs-btn-hover-border-color: #ff0039;--bs-btn-focus-shadow-rgb: 255, 0, 57;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff0039;--bs-btn-active-border-color: #ff0039;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff0039;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff0039;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #2761e3;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: #1f4eb6;--bs-btn-hover-border-color: transparent;--bs-btn-active-color: #1f4eb6;--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 71, 121, 231;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #343a40;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #343a40;--bs-dropdown-link-hover-color: #343a40;--bs-dropdown-link-hover-bg: #f8f9fa;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: rgba(52, 58, 64, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #2761e3;--bs-nav-link-hover-color: #1f4eb6;--bs-nav-link-disabled-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width))}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2780e3}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0.5rem;--bs-navbar-color: #fdfeff;--bs-navbar-hover-color: rgba(253, 253, 255, 0.8);--bs-navbar-disabled-color: rgba(253, 254, 255, 0.75);--bs-navbar-active-color: #fdfdff;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #fdfeff;--bs-navbar-brand-hover-color: #fdfdff;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23fdfeff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(253, 254, 255, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #fdfeff;--bs-navbar-hover-color: rgba(253, 253, 255, 0.8);--bs-navbar-disabled-color: rgba(253, 254, 255, 0.75);--bs-navbar-active-color: #fdfdff;--bs-navbar-brand-color: #fdfeff;--bs-navbar-brand-hover-color: #fdfdff;--bs-navbar-toggler-border-color: rgba(253, 254, 255, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23fdfeff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23fdfeff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}}.accordion{--bs-accordion-color: #343a40;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #343a40;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23343a40'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2310335b'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #93c0f1;--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #10335b;--bs-accordion-active-bg: #d4e6f9}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:not(:first-of-type){border-top:0}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: rgba(52, 58, 64, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #2761e3;--bs-pagination-bg: #fff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: #dee2e6;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #1f4eb6;--bs-pagination-hover-bg: #f8f9fa;--bs-pagination-hover-border-color: #dee2e6;--bs-pagination-focus-color: #1f4eb6;--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #2780e3;--bs-pagination-active-border-color: #2780e3;--bs-pagination-disabled-color: rgba(52, 58, 64, 0.75);--bs-pagination-disabled-bg: #e9ecef;--bs-pagination-disabled-border-color: #dee2e6;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(1px*-1)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--bs-progress-height: 0.5rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2780e3;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #343a40;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(52, 58, 64, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #343a40;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: rgba(52, 58, 64, 0.75);--bs-list-group-disabled-bg: #fff;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2780e3;--bs-list-group-active-border-color: #2780e3;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(52, 58, 64, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color)}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #e9ecef;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #343a40;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #343a40;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(31, 102, 182, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(31, 102, 182, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(50, 146, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(50, 146, 19, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(122, 67, 150, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(122, 67, 150, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(204, 94, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 94, 19, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(204, 0, 46, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 0, 46, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:" "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:" "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}:root{--bslib-page-sidebar-title-bg: #2780e3;--bslib-page-sidebar-title-color: #fff}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#fdfeff}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fdfdff}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:#595959}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:#595959;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(33,81,191,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#8c8c8c}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:#595959}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(33,81,191,.8)}div.sidebar-item-container.disabled{color:rgba(89,89,89,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#2151bf}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#fff}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#fff;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#2780e3;color:#fdfeff;border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#1f4eb6}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:64px}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#757575}.nav-footer a{color:#757575}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#fdfeff;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#595959;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#fdfeff;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#fdfeff;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#343a40;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#343a40;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#343a40;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#343a40;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#343a40;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#f2f2f2;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#4b95e8}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#343a40}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#e5effc}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#343a40}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#343a40}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#fdfeff}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#595959}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(255,255,255,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#343a40;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(52,58,64,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#5397e9 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#343a40 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#3aa716 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#fa6400 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#f8f9fa !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#343a40 !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px #549be9;border-bottom:solid 1px #549be9}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:#4b95e8}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#fdfeff}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#343a40}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#343a40}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px #bcbfc0;padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#343a40}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#343a40;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#2761e3}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#2761e3}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#2761e3}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#2761e3}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#2761e3}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#343a40;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#343a40}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since +* that seems to be what ansi_up emits +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #343a40;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #343a40;--mermaid-node-fg-color: #343a40;--mermaid-fg-color: #343a40;--mermaid-fg-color--lighter: #4b545c;--mermaid-fg-color--lightest: #626d78;--mermaid-font-family: Source Sans Pro, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2780e3;--mermaid-node-bg-color: rgba(39, 128, 227, 0.1);--mermaid-node-fg-color: #343a40}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1250px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>section:first-of-type>h2:first-child,main.content>section:first-of-type>.h2:first-child{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#6d7a86}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:#6d7a86}.quarto-layout-cell[data-ref-parent] caption{color:#6d7a86}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#6d7a86;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#dee2e6 1px solid;border-right:#dee2e6 1px solid;border-bottom:#dee2e6 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(233,236,239,.65);border:1px solid rgba(233,236,239,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#6d7a86}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f8f9fa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#2761e3}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#2761e3}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #e9ecef;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #2761e3;color:#2761e3 !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#2761e3 !important}kbd,.kbd{color:#343a40;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2780e3}div.callout-note.callout-style-default>.callout-header{background-color:#e9f2fc}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#3fb618}div.callout-tip.callout-style-default>.callout-header{background-color:#ecf8e8}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#ff7518}div.callout-warning.callout-style-default>.callout-header{background-color:#fff1e8}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#f0ad4e}div.callout-caution.callout-style-default>.callout-header{background-color:#fef7ed}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#ff0039}div.callout-important.callout-style-default>.callout-header{background-color:#ffe6eb}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#2780e3;color:#fdfeff}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#343a40}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: #cacccd;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #cacccd;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 75, 80, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}nav.quarto-secondary-nav.color-navbar{background-color:#2780e3;color:#fdfeff}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#fdfeff}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(233,236,239,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#4b545c;border:solid #4b545c 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#e9ecef;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid #ebedee;border-bottom:1px solid #ebedee}.table>thead{border-top-width:0;border-bottom:1px solid #b2bac1}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#fdfeff;background:#2780e3}.quarto-title-banner a{color:#fdfeff}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:#fdfeff}.quarto-title-banner .code-tools-button{color:#97cbff}.quarto-title-banner .code-tools-button:hover{color:#fdfeff}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}body{-webkit-font-smoothing:antialiased}.badge.bg-light{color:#343a40}.progress .progress-bar{font-size:8px;line-height:8px} diff --git a/site_libs/bootstrap/bootstrap.min.js b/site_libs/bootstrap/bootstrap.min.js new file mode 100644 index 00000000..e8f21f70 --- /dev/null +++ b/site_libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"

"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/site_libs/clipboard/clipboard.min.js b/site_libs/clipboard/clipboard.min.js new file mode 100644 index 00000000..1103f811 --- /dev/null +++ b/site_libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/site_libs/quarto-html/popper.min.js b/site_libs/quarto-html/popper.min.js new file mode 100644 index 00000000..e3726d72 --- /dev/null +++ b/site_libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.7 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/site_libs/quarto-html/quarto-syntax-highlighting.css b/site_libs/quarto-html/quarto-syntax-highlighting.css new file mode 100644 index 00000000..b30ce576 --- /dev/null +++ b/site_libs/quarto-html/quarto-syntax-highlighting.css @@ -0,0 +1,205 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-ot-color: #003B4F; + --quarto-hl-at-color: #657422; + --quarto-hl-ss-color: #20794D; + --quarto-hl-an-color: #5E5E5E; + --quarto-hl-fu-color: #4758AB; + --quarto-hl-st-color: #20794D; + --quarto-hl-cf-color: #003B4F; + --quarto-hl-op-color: #5E5E5E; + --quarto-hl-er-color: #AD0000; + --quarto-hl-bn-color: #AD0000; + --quarto-hl-al-color: #AD0000; + --quarto-hl-va-color: #111111; + --quarto-hl-bu-color: inherit; + --quarto-hl-ex-color: inherit; + --quarto-hl-pp-color: #AD0000; + --quarto-hl-in-color: #5E5E5E; + --quarto-hl-vs-color: #20794D; + --quarto-hl-wa-color: #5E5E5E; + --quarto-hl-do-color: #5E5E5E; + --quarto-hl-im-color: #00769E; + --quarto-hl-ch-color: #20794D; + --quarto-hl-dt-color: #AD0000; + --quarto-hl-fl-color: #AD0000; + --quarto-hl-co-color: #5E5E5E; + --quarto-hl-cv-color: #5E5E5E; + --quarto-hl-cn-color: #8f5902; + --quarto-hl-sc-color: #5E5E5E; + --quarto-hl-dv-color: #AD0000; + --quarto-hl-kw-color: #003B4F; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre > code.sourceCode > span { + color: #003B4F; +} + +code span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +code span.ot { + color: #003B4F; + font-style: inherit; +} + +code span.at { + color: #657422; + font-style: inherit; +} + +code span.ss { + color: #20794D; + font-style: inherit; +} + +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +code span.fu { + color: #4758AB; + font-style: inherit; +} + +code span.st { + color: #20794D; + font-style: inherit; +} + +code span.cf { + color: #003B4F; + font-weight: bold; + font-style: inherit; +} + +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +code span.er { + color: #AD0000; + font-style: inherit; +} + +code span.bn { + color: #AD0000; + font-style: inherit; +} + +code span.al { + color: #AD0000; + font-style: inherit; +} + +code span.va { + color: #111111; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; +} + +code span.pp { + color: #AD0000; + font-style: inherit; +} + +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +code span.vs { + color: #20794D; + font-style: inherit; +} + +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +code span.do { + color: #5E5E5E; + font-style: italic; +} + +code span.im { + color: #00769E; + font-style: inherit; +} + +code span.ch { + color: #20794D; + font-style: inherit; +} + +code span.dt { + color: #AD0000; + font-style: inherit; +} + +code span.fl { + color: #AD0000; + font-style: inherit; +} + +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +code span.cn { + color: #8f5902; + font-style: inherit; +} + +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +code span.dv { + color: #AD0000; + font-style: inherit; +} + +code span.kw { + color: #003B4F; + font-weight: bold; + font-style: inherit; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > *, .margin-caption, .aside" + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + if (top < lastBottom) { + const marginChildStyle = window.getComputedStyle(marginChild); + const marginBottom = parseFloat(marginChildStyle["marginBottom"]); + const margin = lastBottom - top + marginBottom; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(() => { + layoutMarginEls(); + if ( + window.document.body.getBoundingClientRect().width < 990 && + isReaderMode() + ) { + quartoToggleReader(); + } + }, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) + function fireSlideEnter(e) { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) + document.addEventListener("tabby", fireSlideEnter, false); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id="${anchor}"]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + // This is the no-scroll case where last section should be the active one + sectionIndex = 0; + } else { + // This finds the last section visible on screen that should be made active + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + const currentPagePath = offsetAbsoluteUrl(window.location.href); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + if ( + item === currentPagePath || + item === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + child.style.pointerEvents = "none"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.pointerEvents = null; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + child.style.pointerEvents = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + // toc-expand: false + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +// grouped tabsets +window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } +}); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/site_libs/quarto-html/tippy.css b/site_libs/quarto-html/tippy.css new file mode 100644 index 00000000..e6ae635c --- /dev/null +++ b/site_libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/site_libs/quarto-html/tippy.umd.min.js b/site_libs/quarto-html/tippy.umd.min.js new file mode 100644 index 00000000..ca292be3 --- /dev/null +++ b/site_libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/site_libs/quarto-nav/headroom.min.js b/site_libs/quarto-nav/headroom.min.js new file mode 100644 index 00000000..b08f1dff --- /dev/null +++ b/site_libs/quarto-nav/headroom.min.js @@ -0,0 +1,7 @@ +/*! + * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js + * License: MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s}); diff --git a/site_libs/quarto-nav/quarto-nav.js b/site_libs/quarto-nav/quarto-nav.js new file mode 100644 index 00000000..38cc4305 --- /dev/null +++ b/site_libs/quarto-nav/quarto-nav.js @@ -0,0 +1,325 @@ +const headroomChanged = new CustomEvent("quarto-hrChanged", { + detail: {}, + bubbles: true, + cancelable: false, + composed: false, +}); + +const announceDismiss = () => { + const annEl = window.document.getElementById("quarto-announcement"); + if (annEl) { + annEl.remove(); + + const annId = annEl.getAttribute("data-announcement-id"); + window.localStorage.setItem(`quarto-announce-${annId}`, "true"); + } +}; + +const announceRegister = () => { + const annEl = window.document.getElementById("quarto-announcement"); + if (annEl) { + const annId = annEl.getAttribute("data-announcement-id"); + const isDismissed = + window.localStorage.getItem(`quarto-announce-${annId}`) || false; + if (isDismissed) { + announceDismiss(); + return; + } else { + annEl.classList.remove("hidden"); + } + + const actionEl = annEl.querySelector(".quarto-announcement-action"); + if (actionEl) { + actionEl.addEventListener("click", function (e) { + e.preventDefault(); + // Hide the bar immediately + announceDismiss(); + }); + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function () { + let init = false; + + announceRegister(); + + // Manage the back to top button, if one is present. + let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; + const scrollDownBuffer = 5; + const scrollUpBuffer = 35; + const btn = document.getElementById("quarto-back-to-top"); + const hideBackToTop = () => { + btn.style.display = "none"; + }; + const showBackToTop = () => { + btn.style.display = "inline-block"; + }; + if (btn) { + window.document.addEventListener( + "scroll", + function () { + const currentScrollTop = + window.pageYOffset || document.documentElement.scrollTop; + + // Shows and hides the button 'intelligently' as the user scrolls + if (currentScrollTop - scrollDownBuffer > lastScrollTop) { + hideBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) { + showBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } + + // Show the button at the bottom, hides it at the top + if (currentScrollTop <= 0) { + hideBackToTop(); + } else if ( + window.innerHeight + currentScrollTop >= + document.body.offsetHeight + ) { + showBackToTop(); + } + }, + false + ); + } + + function throttle(func, wait) { + var timeout; + return function () { + const context = this; + const args = arguments; + const later = function () { + clearTimeout(timeout); + timeout = null; + func.apply(context, args); + }; + + if (!timeout) { + timeout = setTimeout(later, wait); + } + }; + } + + function headerOffset() { + // Set an offset if there is are fixed top navbar + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl) { + return headerEl.clientHeight; + } else { + return 0; + } + } + + function footerOffset() { + const footerEl = window.document.querySelector("footer.footer"); + if (footerEl) { + return footerEl.clientHeight; + } else { + return 0; + } + } + + function dashboardOffset() { + const dashboardNavEl = window.document.getElementById( + "quarto-dashboard-header" + ); + if (dashboardNavEl !== null) { + return dashboardNavEl.clientHeight; + } else { + return 0; + } + } + + function updateDocumentOffsetWithoutAnimation() { + updateDocumentOffset(false); + } + + function updateDocumentOffset(animated) { + // set body offset + const topOffset = headerOffset(); + const bodyOffset = topOffset + footerOffset() + dashboardOffset(); + const bodyEl = window.document.body; + bodyEl.setAttribute("data-bs-offset", topOffset); + bodyEl.style.paddingTop = topOffset + "px"; + + // deal with sidebar offsets + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + if (!animated) { + sidebar.classList.add("notransition"); + // Remove the no transition class after the animation has time to complete + setTimeout(function () { + sidebar.classList.remove("notransition"); + }, 201); + } + + if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) { + sidebar.style.top = "0"; + sidebar.style.maxHeight = "100vh"; + } else { + sidebar.style.top = topOffset + "px"; + sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)"; + } + }); + + // allow space for footer + const mainContainer = window.document.querySelector(".quarto-container"); + if (mainContainer) { + mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)"; + } + + // link offset + let linkStyle = window.document.querySelector("#quarto-target-style"); + if (!linkStyle) { + linkStyle = window.document.createElement("style"); + linkStyle.setAttribute("id", "quarto-target-style"); + window.document.head.appendChild(linkStyle); + } + while (linkStyle.firstChild) { + linkStyle.removeChild(linkStyle.firstChild); + } + if (topOffset > 0) { + linkStyle.appendChild( + window.document.createTextNode(` + section:target::before { + content: ""; + display: block; + height: ${topOffset}px; + margin: -${topOffset}px 0 0; + }`) + ); + } + if (init) { + window.dispatchEvent(headroomChanged); + } + init = true; + } + + // initialize headroom + var header = window.document.querySelector("#quarto-header"); + if (header && window.Headroom) { + const headroom = new window.Headroom(header, { + tolerance: 5, + onPin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.remove("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + onUnpin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.add("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + }); + headroom.init(); + + let frozen = false; + window.quartoToggleHeadroom = function () { + if (frozen) { + headroom.unfreeze(); + frozen = false; + } else { + headroom.freeze(); + frozen = true; + } + }; + } + + window.addEventListener( + "hashchange", + function (e) { + if ( + getComputedStyle(document.documentElement).scrollBehavior !== "smooth" + ) { + window.scrollTo(0, window.pageYOffset - headerOffset()); + } + }, + false + ); + + // Observe size changed for the header + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl && window.ResizeObserver) { + const observer = new window.ResizeObserver(() => { + setTimeout(updateDocumentOffsetWithoutAnimation, 0); + }); + observer.observe(headerEl, { + attributes: true, + childList: true, + characterData: true, + }); + } else { + window.addEventListener( + "resize", + throttle(updateDocumentOffsetWithoutAnimation, 50) + ); + } + setTimeout(updateDocumentOffsetWithoutAnimation, 250); + + // fixup index.html links if we aren't on the filesystem + if (window.location.protocol !== "file:") { + const links = window.document.querySelectorAll("a"); + for (let i = 0; i < links.length; i++) { + if (links[i].href) { + links[i].dataset.originalHref = links[i].href; + links[i].href = links[i].href.replace(/\/index\.html/, "/"); + } + } + + // Fixup any sharing links that require urls + // Append url to any sharing urls + const sharingLinks = window.document.querySelectorAll( + "a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item" + ); + for (let i = 0; i < sharingLinks.length; i++) { + const sharingLink = sharingLinks[i]; + const href = sharingLink.getAttribute("href"); + if (href) { + sharingLink.setAttribute( + "href", + href.replace("|url|", window.location.href) + ); + } + } + + // Scroll the active navigation item into view, if necessary + const navSidebar = window.document.querySelector("nav#quarto-sidebar"); + if (navSidebar) { + // Find the active item + const activeItem = navSidebar.querySelector("li.sidebar-item a.active"); + if (activeItem) { + // Wait for the scroll height and height to resolve by observing size changes on the + // nav element that is scrollable + const resizeObserver = new ResizeObserver((_entries) => { + // The bottom of the element + const elBottom = activeItem.offsetTop; + const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight; + + // The element height and scroll height are the same, then we are still loading + if (viewBottom !== navSidebar.scrollHeight) { + // Determine if the item isn't visible and scroll to it + if (elBottom >= viewBottom) { + navSidebar.scrollTop = elBottom; + } + + // stop observing now since we've completed the scroll + resizeObserver.unobserve(navSidebar); + } + }); + resizeObserver.observe(navSidebar); + } + } + } +}); diff --git a/site_libs/quarto-search/autocomplete.umd.js b/site_libs/quarto-search/autocomplete.umd.js new file mode 100644 index 00000000..ae0063aa --- /dev/null +++ b/site_libs/quarto-search/autocomplete.umd.js @@ -0,0 +1,3 @@ +/*! @algolia/autocomplete-js 1.11.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,u,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return a}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function N(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r=3||2===n&&r>=4||1===n&&r>=10);function i(t,n,r){if(o&&void 0!==r){var i=r[0].__autocomplete_algoliaCredentials,u={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(D(n),[{headers:u}]))}else e.apply(void 0,[t].concat(D(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDsAfterSearch",B(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDs",B(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDsAfterSearch",B(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDs",B(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=k(t,A);return[].concat(D(e),D(q(N(N({},r),{},{objectIDs:(null==n?void 0:n.map((function(e){return e.objectID})))||r.objectIDs})).map((function(e){return{items:n,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return i("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function F(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function L(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function M(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&z({onItemsChange:r,items:n,insights:a,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;function l(e){t({algoliaInsightsPlugin:{__algoliaSearchParameters:W({clickAnalytics:!0},e?{userToken:e}:{}),insights:a}})}u("addAlgoliaAgent","insights-plugin"),l(),u("onUserTokenChange",l),u("getUserToken",null,(function(e,t){l(t)})),n((function(e){var t=e.item,n=e.state,r=e.event,i=e.source;L(t)&&o({state:n,event:r,insights:a,item:t,insightsEvents:[W({eventName:"Item Selected"},j({item:t,items:i.getItems().filter(L)}))]})})),r((function(e){var t=e.item,n=e.source,r=e.state,o=e.event;L(t)&&i({state:r,event:o,insights:a,item:t,insightsEvents:[W({eventName:"Item Active"},j({item:t,items:n.getItems().filter(L)}))]})}))},onStateChange:function(e){var t=e.state;c({state:t})},__autocomplete_pluginOptions:e}}function J(e,t){var n=t;return{then:function(t,r){return J(e.then(Y(t,n,e),Y(r,n,e)),n)},catch:function(t){return J(e.catch(Y(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),J(e.finally(Y(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function X(e){return J(e,{isCanceled:!1,onCancelList:[]})}function Y(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function Z(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function te(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:d(),plugins:o,initialState:he({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(ye(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:O,onResolve:O};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=te(te({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return m(e)})).then((function(e){return e.map((function(e){return he(he({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:he({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function Se(e){return Se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Se(e)}function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pe(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var He,Ve,We,Ke=null,Qe=(He=-1,Ve=-1,We=void 0,function(e){var t=++He;return Promise.resolve(e).then((function(e){return We&&t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function et(e){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},et(e)}var tt=["props","refresh","store"],nt=["inputElement","formElement","panelElement"],rt=["inputElement"],ot=["inputElement","maxLength"],it=["source"],ut=["item","source"];function at(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function lt(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ft(e){var t=e.props,n=e.refresh,r=e.store,o=st(e,tt);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return lt({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},st(e,nt))},getRootProps:function(e){return lt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return ie(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ie(t.id,"label")},e)},getFormProps:function(e){return e.inputElement,lt({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(lt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(lt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},st(e,rt))},getLabelProps:function(e){return lt({htmlFor:ie(t.id,"input"),id:ie(t.id,"label")},e)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&$e(lt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var l=a.maxLength,c=void 0===l?512:l,s=st(a,ot),f=oe(r.getState()),p=function(e){return Boolean(e&&e.match(ue))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),m=t.enterKeyHint||(null!=f&&f.itemUrl&&!p?"go":"search");return lt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?ie(t.id,"item-".concat(r.getState().activeItemId),null==f?void 0:f.source):void 0,"aria-controls":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return ie(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ie(t.id,"label"),value:r.getState().completion||r.getState().query,id:ie(t.id,"input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:m,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(e){$e(lt({event:e,props:t,query:e.currentTarget.value.slice(0,c),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=Ze(e,Ge);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=oe(o.getState()),t=n.environment.document.getElementById(ie(n.id,"item-".concat(o.getState().activeItemId),null==e?void 0:e.source));t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1))},a=function(){var e=oe(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,l=e.source;l.onActive(Xe({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:l,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?$e(Xe({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=oe(o.getState()),c=l.item,s=l.itemInputValue,f=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:f,item:c,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:f,item:c,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),void n.navigator.navigate({itemUrl:f,item:c,state:o.getState()});$e(Xe({event:t,nextState:{isOpen:!1},props:n,query:s,refresh:r,store:o},i)).then((function(){p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i))}))}}}(lt({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:O,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return lt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.source,o=st(n,it);return lt({role:"listbox","aria-labelledby":ie(t.id,"label"),id:ie(t.id,"list",r)},o)},getItemProps:function(e){var i=e.item,u=e.source,a=st(e,ut);return lt({id:ie(t.id,"item-".concat(i.__autocomplete_id),u),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=oe(r.getState());if(null!==r.getState().activeItemId&&t){var u=t.item,a=t.itemInputValue,l=t.itemUrl,c=t.source;c.onActive(lt({event:e,item:u,itemInputValue:a,itemUrl:l,refresh:n,source:c,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=u.getItemInputValue({item:i,state:r.getState()}),l=u.getItemUrl({item:i,state:r.getState()});(l?Promise.resolve():$e(lt({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){u.onSelect(lt({event:e,item:i,itemInputValue:a,itemUrl:l,refresh:n,source:u,state:r.getState()},o))}))}},a)}}}function pt(e){return pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pt(e)}function mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vt(e){for(var t=1;t=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},l=0;l"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[l][c+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var kt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function xt(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function Nt(){for(var e=arguments.length,t=new Array(e),n=0;n2&&(u.children=arguments.length>3?Jt.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return sn(e,u,r,o,null)}function sn(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++Yt:o};return null==o&&null!=Xt.vnode&&Xt.vnode(i),i}function fn(e){return e.children}function pn(e,t){this.props=e,this.context=t}function mn(e,t){if(null==t)return e.__?mn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&Zt.sort(nn));yn.__r=0}function bn(e,t,n,r,o,i,u,a,l,c){var s,f,p,m,v,d,y,b=r&&r.__k||on,g=b.length;for(n.__k=[],s=0;s0?sn(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=n,m.__b=n.__b+1,null===(p=b[s])||p&&m.key==p.key&&m.type===p.type)b[s]=void 0;else for(f=0;f=0;t--)if((n=e.__k[t])&&(r=On(n)))return r;return null}function _n(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||un.test(t)?n:n+"px"}function Sn(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||_n(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||_n(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r||e.addEventListener(t,i?Pn:jn,i):e.removeEventListener(t,i?Pn:jn,i);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function jn(e){return this.l[e.type+!1](Xt.event?Xt.event(e):e)}function Pn(e){return this.l[e.type+!0](Xt.event?Xt.event(e):e)}function wn(e,t,n,r,o,i,u,a,l){var c,s,f,p,m,v,d,y,b,g,h,O,_,S,j,P=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,a=t.__e=n.__e,t.__h=null,i=[a]),(c=Xt.__b)&&c(t);try{e:if("function"==typeof P){if(y=t.props,b=(c=P.contextType)&&r[c.__c],g=c?b?b.props.value:c.__:r,n.__c?d=(s=t.__c=n.__c).__=s.__E:("prototype"in P&&P.prototype.render?t.__c=s=new P(y,g):(t.__c=s=new pn(y,g),s.constructor=P,s.render=Cn),b&&b.sub(s),s.props=y,s.state||(s.state={}),s.context=g,s.__n=r,f=s.__d=!0,s.__h=[],s._sb=[]),null==s.__s&&(s.__s=s.state),null!=P.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=an({},s.__s)),an(s.__s,P.getDerivedStateFromProps(y,s.__s))),p=s.props,m=s.state,s.__v=t,f)null==P.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==P.getDerivedStateFromProps&&y!==p&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(y,g),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(y,s.__s,g)||t.__v===n.__v){for(t.__v!==n.__v&&(s.props=y,s.state=s.__s,s.__d=!1),s.__e=!1,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),h=0;h0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(xn);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Tn(e){return function(e){if(Array.isArray(e))return qn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return qn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",""":'"',"'":"'"},Fn=new RegExp(/\w/i),Ln=/&(amp|quot|lt|gt|#39);/g,Un=RegExp(Ln.source);function Mn(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Fn.test((o=i.value)&&Un.test(o)?o.replace(Ln,(function(e){return Rn[e]})):o)||a!==u?i.isHighlighted:a}function Hn(e){return Hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Hn(e)}function Vn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wn(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ur(e){return function(e){if(Array.isArray(e))return ar(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ar(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ar(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ar(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;if(!O.value.core.openOnFocus&&!t.query)return n;var r=Boolean(y.current||O.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:br,options:e}}))})),j=f(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},O.value.core.initialState)),P={getEnvironmentProps:O.value.renderer.getEnvironmentProps,getFormProps:O.value.renderer.getFormProps,getInputProps:O.value.renderer.getInputProps,getItemProps:O.value.renderer.getItemProps,getLabelProps:O.value.renderer.getLabelProps,getListProps:O.value.renderer.getListProps,getPanelProps:O.value.renderer.getPanelProps,getRootProps:O.value.renderer.getRootProps},w={setActiveItemId:S.value.setActiveItemId,setQuery:S.value.setQuery,setCollections:S.value.setCollections,setIsOpen:S.value.setIsOpen,setStatus:S.value.setStatus,setContext:S.value.setContext,refresh:S.value.refresh,navigator:S.value.navigator},I=m((function(){return Ct.bind(O.value.renderer.renderer.createElement)})),A=m((function(){return Gt({autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,environment:O.value.core.environment,isDetached:_.value,placeholder:O.value.core.placeholder,propGetters:P,setIsModalOpen:k,state:j.current,translations:O.value.renderer.translations})}));function E(){Ht(A.value.panel,{style:_.value?{}:yr({panelPlacement:O.value.renderer.panelPlacement,container:A.value.root,form:A.value.form,environment:O.value.core.environment})})}function D(e){j.current=e;var t={autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,components:O.value.renderer.components,container:O.value.renderer.container,html:I.value,dom:A.value,panelContainer:_.value?A.value.detachedContainer:O.value.renderer.panelContainer,propGetters:P,state:j.current,renderer:O.value.renderer.renderer},r=!b(e)&&!y.current&&O.value.renderer.renderNoResults||O.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;Vt(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),Vt(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),Ht(o.label,{hidden:"stalled"===u.status}),Ht(o.loadingIndicator,{hidden:"stalled"!==u.status}),Ht(o.clearButton,{hidden:!u.query}),Ht(o.detachedSearchButtonQuery,{textContent:u.query}),Ht(o.detachedSearchButtonPlaceholder,{hidden:Boolean(u.query)})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,l=t.dom,c=t.panelContainer,s=t.propGetters,f=t.state,p=t.components,m=t.renderer;if(f.isOpen){c.contains(l.panel)||"loading"===f.status||c.appendChild(l.panel),l.panel.classList.toggle("aa-Panel--stalled","stalled"===f.status);var v=f.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var l=e.source,c=e.items;return m.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":l.sourceId},l.templates.header&&m.createElement("div",{className:u.sourceHeader},l.templates.header({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})),l.templates.noResults&&0===c.length?m.createElement("div",{className:u.sourceNoResults},l.templates.noResults({components:p,createElement:m.createElement,Fragment:m.Fragment,source:l,state:f,html:a})):m.createElement("ul",i({className:u.list},s.getListProps(n({state:f,props:r.getListProps({source:l})},o))),c.map((function(e){var t=r.getItemProps({item:e,source:l});return m.createElement("li",i({key:t.id,className:u.item},s.getItemProps(n({state:f,props:t},o))),l.templates.item({components:p,createElement:m.createElement,Fragment:m.Fragment,item:e,state:f,html:a}))}))),l.templates.footer&&m.createElement("div",{className:u.sourceFooter},l.templates.footer({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})))})),d=m.createElement(m.Fragment,null,m.createElement("div",{className:u.panelLayout},v),m.createElement("div",{className:"aa-GradientBottom"})),y=v.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:d,state:f,sections:v,elements:y},m),{},{components:p,html:a},o),l.panel)}else c.contains(l.panel)&&c.removeChild(l.panel)}(r,t)}function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};l();var t=O.value.renderer,n=t.components,r=u(t,gr);g.current=qt(r,O.value.core,{components:Bt(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),v(),c(),S.value.refresh().then((function(){D(j.current)}))}function k(e){requestAnimationFrame((function(){var t=O.value.core.environment.document.body.contains(A.value.detachedOverlay);e!==t&&(e?(O.value.core.environment.document.body.appendChild(A.value.detachedOverlay),O.value.core.environment.document.body.classList.add("aa-Detached"),A.value.input.focus()):(O.value.core.environment.document.body.removeChild(A.value.detachedOverlay),O.value.core.environment.document.body.classList.remove("aa-Detached")))}))}return a((function(){var e=S.value.getEnvironmentProps({formElement:A.value.form,panelElement:A.value.panel,inputElement:A.value.input});return Ht(O.value.core.environment,e),function(){Ht(O.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=_.value?O.value.core.environment.document.body:O.value.renderer.panelContainer,t=_.value?A.value.detachedOverlay:A.value.panel;return _.value&&j.current.isOpen&&k(!0),D(j.current),function(){e.contains(t)&&e.removeChild(t)}})),a((function(){var e=O.value.renderer.container;return e.appendChild(A.value.root),function(){e.removeChild(A.value.root)}})),a((function(){var e=p((function(e){D(e.state)}),0);return h.current=function(t){var n=t.state,r=t.prevState;(_.value&&r.isOpen!==n.isOpen&&k(n.isOpen),_.value||!n.isOpen||r.isOpen||E(),n.query!==r.query)&&O.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){h.current=void 0}})),a((function(){var e=p((function(){var e=_.value;_.value=O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches,e!==_.value?C({}):requestAnimationFrame(E)}),20);return O.value.core.environment.addEventListener("resize",e),function(){O.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!_.value)return function(){};function e(e){A.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=O.value.core.environment.matchMedia(getComputedStyle(O.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(E),function(){}})),n(n({},w),{},{update:C,destroy:function(){l()}})},e.getAlgoliaFacets=function(e){var t=hr({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=Or,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/site_libs/quarto-search/fuse.min.js b/site_libs/quarto-search/fuse.min.js new file mode 100644 index 00000000..adc28356 --- /dev/null +++ b/site_libs/quarto-search/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2022 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/site_libs/quarto-search/quarto-search.js b/site_libs/quarto-search/quarto-search.js new file mode 100644 index 00000000..d788a958 --- /dev/null +++ b/site_libs/quarto-search/quarto-search.js @@ -0,0 +1,1290 @@ +const kQueryArg = "q"; +const kResultsArg = "show-results"; + +// If items don't provide a URL, then both the navigator and the onSelect +// function aren't called (and therefore, the default implementation is used) +// +// We're using this sentinel URL to signal to those handlers that this +// item is a more item (along with the type) and can be handled appropriately +const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05"; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Ensure that search is available on this page. If it isn't, + // should return early and not do anything + var searchEl = window.document.getElementById("quarto-search"); + if (!searchEl) return; + + const { autocomplete } = window["@algolia/autocomplete-js"]; + + let quartoSearchOptions = {}; + let language = {}; + const searchOptionEl = window.document.getElementById( + "quarto-search-options" + ); + if (searchOptionEl) { + const jsonStr = searchOptionEl.textContent; + quartoSearchOptions = JSON.parse(jsonStr); + language = quartoSearchOptions.language; + } + + // note the search mode + if (quartoSearchOptions.type === "overlay") { + searchEl.classList.add("type-overlay"); + } else { + searchEl.classList.add("type-textbox"); + } + + // Used to determine highlighting behavior for this page + // A `q` query param is expected when the user follows a search + // to this page + const currentUrl = new URL(window.location); + const query = currentUrl.searchParams.get(kQueryArg); + const showSearchResults = currentUrl.searchParams.get(kResultsArg); + const mainEl = window.document.querySelector("main"); + + // highlight matches on the page + if (query && mainEl) { + // perform any highlighting + highlight(escapeRegExp(query), mainEl); + + // fix up the URL to remove the q query param + const replacementUrl = new URL(window.location); + replacementUrl.searchParams.delete(kQueryArg); + window.history.replaceState({}, "", replacementUrl); + } + + // function to clear highlighting on the page when the search query changes + // (e.g. if the user edits the query or clears it) + let highlighting = true; + const resetHighlighting = (searchTerm) => { + if (mainEl && highlighting && query && searchTerm !== query) { + clearHighlight(query, mainEl); + highlighting = false; + } + }; + + // Clear search highlighting when the user scrolls sufficiently + const resetFn = () => { + resetHighlighting(""); + window.removeEventListener("quarto-hrChanged", resetFn); + window.removeEventListener("quarto-sectionChanged", resetFn); + }; + + // Register this event after the initial scrolling and settling of events + // on the page + window.addEventListener("quarto-hrChanged", resetFn); + window.addEventListener("quarto-sectionChanged", resetFn); + + // Responsively switch to overlay mode if the search is present on the navbar + // Note that switching the sidebar to overlay mode requires more coordinate (not just + // the media query since we generate different HTML for sidebar overlays than we do + // for sidebar input UI) + const detachedMediaQuery = + quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)"; + + // If configured, include the analytics client to send insights + const plugins = configurePlugins(quartoSearchOptions); + + let lastState = null; + const { setIsOpen, setQuery, setCollections } = autocomplete({ + container: searchEl, + detachedMediaQuery: detachedMediaQuery, + defaultActiveItemId: 0, + panelContainer: "#quarto-search-results", + panelPlacement: quartoSearchOptions["panel-placement"], + debug: false, + openOnFocus: true, + plugins, + classNames: { + form: "d-flex", + }, + placeholder: language["search-text-placeholder"], + translations: { + clearButtonTitle: language["search-clear-button-title"], + detachedCancelButtonText: language["search-detached-cancel-button-title"], + submitButtonTitle: language["search-submit-button-title"], + }, + initialState: { + query, + }, + getItemUrl({ item }) { + return item.href; + }, + onStateChange({ state }) { + // If this is a file URL, note that + + // Perhaps reset highlighting + resetHighlighting(state.query); + + // If the panel just opened, ensure the panel is positioned properly + if (state.isOpen) { + if (lastState && !lastState.isOpen) { + setTimeout(() => { + positionPanel(quartoSearchOptions["panel-placement"]); + }, 150); + } + } + + // Perhaps show the copy link + showCopyLink(state.query, quartoSearchOptions); + + lastState = state; + }, + reshape({ sources, state }) { + return sources.map((source) => { + try { + const items = source.getItems(); + + // Validate the items + validateItems(items); + + // group the items by document + const groupedItems = new Map(); + items.forEach((item) => { + const hrefParts = item.href.split("#"); + const baseHref = hrefParts[0]; + const isDocumentItem = hrefParts.length === 1; + + const items = groupedItems.get(baseHref); + if (!items) { + groupedItems.set(baseHref, [item]); + } else { + // If the href for this item matches the document + // exactly, place this item first as it is the item that represents + // the document itself + if (isDocumentItem) { + items.unshift(item); + } else { + items.push(item); + } + groupedItems.set(baseHref, items); + } + }); + + const reshapedItems = []; + let count = 1; + for (const [_key, value] of groupedItems) { + const firstItem = value[0]; + reshapedItems.push({ + ...firstItem, + type: kItemTypeDoc, + }); + + const collapseMatches = quartoSearchOptions["collapse-after"]; + const collapseCount = + typeof collapseMatches === "number" ? collapseMatches : 1; + + if (value.length > 1) { + const target = `search-more-${count}`; + const isExpanded = + state.context.expanded && + state.context.expanded.includes(target); + + const remainingCount = value.length - collapseCount; + + for (let i = 1; i < value.length; i++) { + if (collapseMatches && i === collapseCount) { + reshapedItems.push({ + target, + title: isExpanded + ? language["search-hide-matches-text"] + : remainingCount === 1 + ? `${remainingCount} ${language["search-more-match-text"]}` + : `${remainingCount} ${language["search-more-matches-text"]}`, + type: kItemTypeMore, + href: kItemTypeMoreHref, + }); + } + + if (isExpanded || !collapseMatches || i < collapseCount) { + reshapedItems.push({ + ...value[i], + type: kItemTypeItem, + target, + }); + } + } + } + count += 1; + } + + return { + ...source, + getItems() { + return reshapedItems; + }, + }; + } catch (error) { + // Some form of error occurred + return { + ...source, + getItems() { + return [ + { + title: error.name || "An Error Occurred While Searching", + text: + error.message || + "An unknown error occurred while attempting to perform the requested search.", + type: kItemTypeError, + }, + ]; + }, + }; + } + }); + }, + navigator: { + navigate({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.location.assign(itemUrl); + } + }, + navigateNewTab({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + const windowReference = window.open(itemUrl, "_blank", "noopener"); + if (windowReference) { + windowReference.focus(); + } + } + }, + navigateNewWindow({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.open(itemUrl, "_blank", "noopener"); + } + }, + }, + getSources({ state, setContext, setActiveItemId, refresh }) { + return [ + { + sourceId: "documents", + getItemUrl({ item }) { + if (item.href) { + return offsetURL(item.href); + } else { + return undefined; + } + }, + onSelect({ + item, + state, + setContext, + setIsOpen, + setActiveItemId, + refresh, + }) { + if (item.type === kItemTypeMore) { + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + + // Toggle more + setIsOpen(true); + } + }, + getItems({ query }) { + if (query === null || query === "") { + return []; + } + + const limit = quartoSearchOptions.limit; + if (quartoSearchOptions.algolia) { + return algoliaSearch(query, limit, quartoSearchOptions.algolia); + } else { + // Fuse search options + const fuseSearchOptions = { + isCaseSensitive: false, + shouldSort: true, + minMatchCharLength: 2, + limit: limit, + }; + + return readSearchData().then(function (fuse) { + return fuseSearch(query, fuse, fuseSearchOptions); + }); + } + }, + templates: { + noResults({ createElement }) { + const hasQuery = lastState.query; + + return createElement( + "div", + { + class: `quarto-search-no-results${ + hasQuery ? "" : " no-query" + }`, + }, + language["search-no-results-text"] + ); + }, + header({ items, createElement }) { + // count the documents + const count = items.filter((item) => { + return item.type === kItemTypeDoc; + }).length; + + if (count > 0) { + return createElement( + "div", + { class: "search-result-header" }, + `${count} ${language["search-matching-documents-text"]}` + ); + } else { + return createElement( + "div", + { class: "search-result-header-no-results" }, + `` + ); + } + }, + footer({ _items, createElement }) { + if ( + quartoSearchOptions.algolia && + quartoSearchOptions.algolia["show-logo"] + ) { + const libDir = quartoSearchOptions.algolia["libDir"]; + const logo = createElement("img", { + src: offsetURL( + `${libDir}/quarto-search/search-by-algolia.svg` + ), + class: "algolia-search-logo", + }); + return createElement( + "a", + { href: "http://www.algolia.com/" }, + logo + ); + } + }, + + item({ item, createElement }) { + return renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh, + quartoSearchOptions + ); + }, + }, + }, + ]; + }, + }); + + window.quartoOpenSearch = () => { + setIsOpen(false); + setIsOpen(true); + focusSearchInput(); + }; + + document.addEventListener("keyup", (event) => { + const { key } = event; + const kbds = quartoSearchOptions["keyboard-shortcut"]; + const focusedEl = document.activeElement; + + const isFormElFocused = [ + "input", + "select", + "textarea", + "button", + "option", + ].find((tag) => { + return focusedEl.tagName.toLowerCase() === tag; + }); + + if ( + kbds && + kbds.includes(key) && + !isFormElFocused && + !document.activeElement.isContentEditable + ) { + event.preventDefault(); + window.quartoOpenSearch(); + } + }); + + // Remove the labeleledby attribute since it is pointing + // to a non-existent label + if (quartoSearchOptions.type === "overlay") { + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + if (inputEl) { + inputEl.removeAttribute("aria-labelledby"); + } + } + + function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; + } + + // If the main document scrolls dismiss the search results + // (otherwise, since they're floating in the document they can scroll with the document) + window.document.body.onscroll = throttle(() => { + // Only do this if we're not detached + // Bug #7117 + // This will happen when the keyboard is shown on ios (resulting in a scroll) + // which then closed the search UI + if (!window.matchMedia(detachedMediaQuery).matches) { + setIsOpen(false); + } + }, 50); + + if (showSearchResults) { + setIsOpen(true); + focusSearchInput(); + } +}); + +function configurePlugins(quartoSearchOptions) { + const autocompletePlugins = []; + const algoliaOptions = quartoSearchOptions.algolia; + if ( + algoliaOptions && + algoliaOptions["analytics-events"] && + algoliaOptions["search-only-api-key"] && + algoliaOptions["application-id"] + ) { + const apiKey = algoliaOptions["search-only-api-key"]; + const appId = algoliaOptions["application-id"]; + + // Aloglia insights may not be loaded because they require cookie consent + // Use deferred loading so events will start being recorded when/if consent + // is granted. + const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => { + if ( + window.aa && + window["@algolia/autocomplete-plugin-algolia-insights"] + ) { + window.aa("init", { + appId, + apiKey, + useCookie: true, + }); + + const { createAlgoliaInsightsPlugin } = + window["@algolia/autocomplete-plugin-algolia-insights"]; + // Register the insights client + const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({ + insightsClient: window.aa, + onItemsChange({ insights, insightsEvents }) { + const events = insightsEvents.flatMap((event) => { + // This API limits the number of items per event to 20 + const chunkSize = 20; + const itemChunks = []; + const eventItems = event.items; + for (let i = 0; i < eventItems.length; i += chunkSize) { + itemChunks.push(eventItems.slice(i, i + chunkSize)); + } + // Split the items into multiple events that can be sent + const events = itemChunks.map((items) => { + return { + ...event, + items, + }; + }); + return events; + }); + + for (const event of events) { + insights.viewedObjectIDs(event); + } + }, + }); + return algoliaInsightsPlugin; + } + }); + + // Add the plugin + autocompletePlugins.push(algoliaInsightsDeferredPlugin); + return autocompletePlugins; + } +} + +// For plugins that may not load immediately, create a wrapper +// plugin and forward events and plugin data once the plugin +// is initialized. This is useful for cases like cookie consent +// which may prevent the analytics insights event plugin from initializing +// immediately. +function deferredLoadPlugin(createPlugin) { + let plugin = undefined; + let subscribeObj = undefined; + const wrappedPlugin = () => { + if (!plugin && subscribeObj) { + plugin = createPlugin(); + if (plugin && plugin.subscribe) { + plugin.subscribe(subscribeObj); + } + } + return plugin; + }; + + return { + subscribe: (obj) => { + subscribeObj = obj; + }, + onStateChange: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onStateChange) { + plugin.onStateChange(obj); + } + }, + onSubmit: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onSubmit) { + plugin.onSubmit(obj); + } + }, + onReset: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onReset) { + plugin.onReset(obj); + } + }, + getSources: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.getSources) { + return plugin.getSources(obj); + } else { + return Promise.resolve([]); + } + }, + data: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.data) { + plugin.data(obj); + } + }, + }; +} + +function validateItems(items) { + // Validate the first item + if (items.length > 0) { + const item = items[0]; + const missingFields = []; + if (item.href == undefined) { + missingFields.push("href"); + } + if (!item.title == undefined) { + missingFields.push("title"); + } + if (!item.text == undefined) { + missingFields.push("text"); + } + + if (missingFields.length === 1) { + throw { + name: `Error: Search index is missing the ${missingFields[0]} field.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the ${missingFields[0]} field or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } else if (missingFields.length > 1) { + const missingFieldList = missingFields + .map((field) => { + return `${field}`; + }) + .join(", "); + + throw { + name: `Error: Search index is missing the following fields: ${missingFieldList}.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } + } +} + +let lastQuery = null; +function showCopyLink(query, options) { + const language = options.language; + lastQuery = query; + // Insert share icon + const inputSuffixEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix" + ); + + if (inputSuffixEl) { + let copyButtonEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix .aa-CopyButton" + ); + + if (copyButtonEl === null) { + copyButtonEl = window.document.createElement("button"); + copyButtonEl.setAttribute("class", "aa-CopyButton"); + copyButtonEl.setAttribute("type", "button"); + copyButtonEl.setAttribute("title", language["search-copy-link-title"]); + copyButtonEl.onmousedown = (e) => { + e.preventDefault(); + e.stopPropagation(); + }; + + const linkIcon = "bi-clipboard"; + const checkIcon = "bi-check2"; + + const shareIconEl = window.document.createElement("i"); + shareIconEl.setAttribute("class", `bi ${linkIcon}`); + copyButtonEl.appendChild(shareIconEl); + inputSuffixEl.prepend(copyButtonEl); + + const clipboard = new window.ClipboardJS(".aa-CopyButton", { + text: function (_trigger) { + const copyUrl = new URL(window.location); + copyUrl.searchParams.set(kQueryArg, lastQuery); + copyUrl.searchParams.set(kResultsArg, "1"); + return copyUrl.toString(); + }, + }); + clipboard.on("success", function (e) { + // Focus the input + + // button target + const button = e.trigger; + const icon = button.querySelector("i.bi"); + + // flash "checked" + icon.classList.add(checkIcon); + icon.classList.remove(linkIcon); + setTimeout(function () { + icon.classList.remove(checkIcon); + icon.classList.add(linkIcon); + }, 1000); + }); + } + + // If there is a query, show the link icon + if (copyButtonEl) { + if (lastQuery && options["copy-button"]) { + copyButtonEl.style.display = "flex"; + } else { + copyButtonEl.style.display = "none"; + } + } + } +} + +/* Search Index Handling */ +// create the index +var fuseIndex = undefined; +var shownWarning = false; + +// fuse index options +const kFuseIndexOptions = { + keys: [ + { name: "title", weight: 20 }, + { name: "section", weight: 20 }, + { name: "text", weight: 10 }, + ], + ignoreLocation: true, + threshold: 0.1, +}; + +async function readSearchData() { + // Initialize the search index on demand + if (fuseIndex === undefined) { + if (window.location.protocol === "file:" && !shownWarning) { + window.alert( + "Search requires JavaScript features disabled when running in file://... URLs. In order to use search, please run this document in a web server." + ); + shownWarning = true; + return; + } + const fuse = new window.Fuse([], kFuseIndexOptions); + + // fetch the main search.json + const response = await fetch(offsetURL("search.json")); + if (response.status == 200) { + return response.json().then(function (searchDocs) { + searchDocs.forEach(function (searchDoc) { + fuse.add(searchDoc); + }); + fuseIndex = fuse; + return fuseIndex; + }); + } else { + return Promise.reject( + new Error( + "Unexpected status from search index request: " + response.status + ) + ); + } + } + + return fuseIndex; +} + +function inputElement() { + return window.document.body.querySelector(".aa-Form .aa-Input"); +} + +function focusSearchInput() { + setTimeout(() => { + const inputEl = inputElement(); + if (inputEl) { + inputEl.focus(); + } + }, 50); +} + +/* Panels */ +const kItemTypeDoc = "document"; +const kItemTypeMore = "document-more"; +const kItemTypeItem = "document-item"; +const kItemTypeError = "error"; + +function renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh, + quartoSearchOptions +) { + switch (item.type) { + case kItemTypeDoc: + return createDocumentCard( + createElement, + "file-richtext", + item.title, + item.section, + item.text, + item.href, + item.crumbs, + quartoSearchOptions + ); + case kItemTypeMore: + return createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh + ); + case kItemTypeItem: + return createSectionCard( + createElement, + item.section, + item.text, + item.href + ); + case kItemTypeError: + return createErrorCard(createElement, item.title, item.text); + default: + return undefined; + } +} + +function createDocumentCard( + createElement, + icon, + title, + section, + text, + href, + crumbs, + quartoSearchOptions +) { + const iconEl = createElement("i", { + class: `bi bi-${icon} search-result-icon`, + }); + const titleEl = createElement("p", { class: "search-result-title" }, title); + const titleContents = [iconEl, titleEl]; + const showParent = quartoSearchOptions["show-item-context"]; + if (crumbs && showParent) { + let crumbsOut = undefined; + const crumbClz = ["search-result-crumbs"]; + if (showParent === "root") { + crumbsOut = crumbs.length > 1 ? crumbs[0] : undefined; + } else if (showParent === "parent") { + crumbsOut = crumbs.length > 1 ? crumbs[crumbs.length - 2] : undefined; + } else { + crumbsOut = crumbs.length > 1 ? crumbs.join(" > ") : undefined; + crumbClz.push("search-result-crumbs-wrap"); + } + + const crumbEl = createElement( + "p", + { class: crumbClz.join(" ") }, + crumbsOut + ); + titleContents.push(crumbEl); + } + + const titleContainerEl = createElement( + "div", + { class: "search-result-title-container" }, + titleContents + ); + + const textEls = []; + if (section) { + const sectionEl = createElement( + "p", + { class: "search-result-section" }, + section + ); + textEls.push(sectionEl); + } + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + textEls.push(descEl); + + const textContainerEl = createElement( + "div", + { class: "search-result-text-container" }, + textEls + ); + + const containerEl = createElement( + "div", + { + class: "search-result-container", + }, + [titleContainerEl, textContainerEl] + ); + + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + containerEl + ); + + const classes = ["search-result-doc", "search-item"]; + if (!section) { + classes.push("document-selectable"); + } + + return createElement( + "div", + { + class: classes.join(" "), + }, + linkEl + ); +} + +function createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh +) { + const moreCardEl = createElement( + "div", + { + class: "search-result-more search-item", + onClick: (e) => { + // Handle expanding the sections by adding the expanded + // section to the list of expanded sections + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + e.stopPropagation(); + }, + }, + item.title + ); + + return moreCardEl; +} + +function toggleExpanded(item, state, setContext, setActiveItemId, refresh) { + const expanded = state.context.expanded || []; + if (expanded.includes(item.target)) { + setContext({ + expanded: expanded.filter((target) => target !== item.target), + }); + } else { + setContext({ expanded: [...expanded, item.target] }); + } + + refresh(); + setActiveItemId(item.__autocomplete_id); +} + +function createSectionCard(createElement, section, text, href) { + const sectionEl = createSection(createElement, section, text, href); + return createElement( + "div", + { + class: "search-result-doc-section search-item", + }, + sectionEl + ); +} + +function createSection(createElement, title, text, href) { + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { class: "search-result-section" }, title); + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + [titleEl, descEl] + ); + return linkEl; +} + +function createErrorCard(createElement, title, text) { + const descEl = createElement("p", { + class: "search-error-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { + class: "search-error-title", + dangerouslySetInnerHTML: { + __html: ` ${title}`, + }, + }); + const errorEl = createElement("div", { class: "search-error" }, [ + titleEl, + descEl, + ]); + return errorEl; +} + +function positionPanel(pos) { + const panelEl = window.document.querySelector( + "#quarto-search-results .aa-Panel" + ); + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + + if (panelEl && inputEl) { + panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`; + if (pos === "start") { + panelEl.style.left = `${Math.round(inputEl.left)}px`; + } else { + panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`; + } + } +} + +/* Highlighting */ +// highlighting functions +function highlightMatch(query, text) { + if (text) { + const start = text.toLowerCase().indexOf(query.toLowerCase()); + if (start !== -1) { + const startMark = ""; + const endMark = ""; + + const end = start + query.length; + text = + text.slice(0, start) + + startMark + + text.slice(start, end) + + endMark + + text.slice(end); + const startInfo = clipStart(text, start); + const endInfo = clipEnd( + text, + startInfo.position + startMark.length + endMark.length + ); + text = + startInfo.prefix + + text.slice(startInfo.position, endInfo.position) + + endInfo.suffix; + + return text; + } else { + return text; + } + } else { + return text; + } +} + +function clipStart(text, pos) { + const clipStart = pos - 50; + if (clipStart < 0) { + // This will just return the start of the string + return { + position: 0, + prefix: "", + }; + } else { + // We're clipping before the start of the string, walk backwards to the first space. + const spacePos = findSpace(text, pos, -1); + return { + position: spacePos.position, + prefix: "", + }; + } +} + +function clipEnd(text, pos) { + const clipEnd = pos + 200; + if (clipEnd > text.length) { + return { + position: text.length, + suffix: "", + }; + } else { + const spacePos = findSpace(text, clipEnd, 1); + return { + position: spacePos.position, + suffix: spacePos.clipped ? "…" : "", + }; + } +} + +function findSpace(text, start, step) { + let stepPos = start; + while (stepPos > -1 && stepPos < text.length) { + const char = text[stepPos]; + if (char === " " || char === "," || char === ":") { + return { + position: step === 1 ? stepPos : stepPos - step, + clipped: stepPos > 1 && stepPos < text.length, + }; + } + stepPos = stepPos + step; + } + + return { + position: stepPos - step, + clipped: false, + }; +} + +// removes highlighting as implemented by the mark tag +function clearHighlight(searchterm, el) { + const childNodes = el.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + if (node.nodeType === Node.ELEMENT_NODE) { + if ( + node.tagName === "MARK" && + node.innerText.toLowerCase() === searchterm.toLowerCase() + ) { + el.replaceChild(document.createTextNode(node.innerText), node); + } else { + clearHighlight(searchterm, node); + } + } + } +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +} + +// highlight matches +function highlight(term, el) { + const termRegex = new RegExp(term, "ig"); + const childNodes = el.childNodes; + + // walk back to front avoid mutating elements in front of us + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + if (node.nodeType === Node.TEXT_NODE) { + // Search text nodes for text to highlight + const text = node.nodeValue; + + let startIndex = 0; + let matchIndex = text.search(termRegex); + if (matchIndex > -1) { + const markFragment = document.createDocumentFragment(); + while (matchIndex > -1) { + const prefix = text.slice(startIndex, matchIndex); + markFragment.appendChild(document.createTextNode(prefix)); + + const mark = document.createElement("mark"); + mark.appendChild( + document.createTextNode( + text.slice(matchIndex, matchIndex + term.length) + ) + ); + markFragment.appendChild(mark); + + startIndex = matchIndex + term.length; + matchIndex = text.slice(startIndex).search(new RegExp(term, "ig")); + if (matchIndex > -1) { + matchIndex = startIndex + matchIndex; + } + } + if (startIndex < text.length) { + markFragment.appendChild( + document.createTextNode(text.slice(startIndex, text.length)) + ); + } + + el.replaceChild(markFragment, node); + } + } else if (node.nodeType === Node.ELEMENT_NODE) { + // recurse through elements + highlight(term, node); + } + } +} + +/* Link Handling */ +// get the offset from this page for a given site root relative url +function offsetURL(url) { + var offset = getMeta("quarto:offset"); + return offset ? offset + url : url; +} + +// read a meta tag value +function getMeta(metaName) { + var metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; +} + +function algoliaSearch(query, limit, algoliaOptions) { + const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"]; + + const applicationId = algoliaOptions["application-id"]; + const searchOnlyApiKey = algoliaOptions["search-only-api-key"]; + const indexName = algoliaOptions["index-name"]; + const indexFields = algoliaOptions["index-fields"]; + const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey); + const searchParams = algoliaOptions["params"]; + const searchAnalytics = !!algoliaOptions["analytics-events"]; + + return getAlgoliaResults({ + searchClient, + queries: [ + { + indexName: indexName, + query, + params: { + hitsPerPage: limit, + clickAnalytics: searchAnalytics, + ...searchParams, + }, + }, + ], + transformResponse: (response) => { + if (!indexFields) { + return response.hits.map((hit) => { + return hit.map((item) => { + return { + ...item, + text: highlightMatch(query, item.text), + }; + }); + }); + } else { + const remappedHits = response.hits.map((hit) => { + return hit.map((item) => { + const newItem = { ...item }; + ["href", "section", "title", "text", "crumbs"].forEach( + (keyName) => { + const mappedName = indexFields[keyName]; + if ( + mappedName && + item[mappedName] !== undefined && + mappedName !== keyName + ) { + newItem[keyName] = item[mappedName]; + delete newItem[mappedName]; + } + } + ); + newItem.text = highlightMatch(query, newItem.text); + return newItem; + }); + }); + return remappedHits; + } + }, + }); +} + +let subSearchTerm = undefined; +let subSearchFuse = undefined; +const kFuseMaxWait = 125; + +async function fuseSearch(query, fuse, fuseOptions) { + let index = fuse; + // Fuse.js using the Bitap algorithm for text matching which runs in + // O(nm) time (no matter the structure of the text). In our case this + // means that long search terms mixed with large index gets very slow + // + // This injects a subIndex that will be used once the terms get long enough + // Usually making this subindex is cheap since there will typically be + // a subset of results matching the existing query + if (subSearchFuse !== undefined && query.startsWith(subSearchTerm)) { + // Use the existing subSearchFuse + index = subSearchFuse; + } else if (subSearchFuse !== undefined) { + // The term changed, discard the existing fuse + subSearchFuse = undefined; + subSearchTerm = undefined; + } + + // Search using the active fuse + const then = performance.now(); + const resultsRaw = await index.search(query, fuseOptions); + const now = performance.now(); + + const results = resultsRaw.map((result) => { + const addParam = (url, name, value) => { + const anchorParts = url.split("#"); + const baseUrl = anchorParts[0]; + const sep = baseUrl.search("\\?") > 0 ? "&" : "?"; + anchorParts[0] = baseUrl + sep + name + "=" + value; + return anchorParts.join("#"); + }; + + return { + title: result.item.title, + section: result.item.section, + href: addParam(result.item.href, kQueryArg, query), + text: highlightMatch(query, result.item.text), + crumbs: result.item.crumbs, + }; + }); + + // If we don't have a subfuse and the query is long enough, go ahead + // and create a subfuse to use for subsequent queries + if ( + now - then > kFuseMaxWait && + subSearchFuse === undefined && + resultsRaw.length < fuseOptions.limit + ) { + subSearchTerm = query; + subSearchFuse = new window.Fuse([], kFuseIndexOptions); + resultsRaw.forEach((rr) => { + subSearchFuse.add(rr.item); + }); + } + return results; +} diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..e8973018 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,79 @@ + + + + https://perceptualrobots.github.io/pct/helpers.html + 2024-08-20T19:40:03.913Z + + + https://perceptualrobots.github.io/pct/architectures.html + 2024-08-20T19:40:03.905Z + + + https://perceptualrobots.github.io/pct/examples.html + 2024-08-20T19:40:03.421Z + + + https://perceptualrobots.github.io/pct/network.html + 2024-08-20T19:40:03.377Z + + + https://perceptualrobots.github.io/pct/nodes.html + 2024-08-20T19:40:03.301Z + + + https://perceptualrobots.github.io/pct/arc.html + 2024-08-20T19:40:03.089Z + + + https://perceptualrobots.github.io/pct/structure.html + 2024-08-20T19:40:02.705Z + + + https://perceptualrobots.github.io/pct/unittests_run_hierarchies.html + 2024-08-20T19:40:00.725Z + + + https://perceptualrobots.github.io/pct/microgrid.html + 2024-08-20T19:40:02.841Z + + + https://perceptualrobots.github.io/pct/environment_processing.html + 2024-08-20T19:40:03.761Z + + + https://perceptualrobots.github.io/pct/webots.html + 2024-08-20T19:40:00.693Z + + + https://perceptualrobots.github.io/pct/hierarchy.html + 2024-08-20T19:40:03.825Z + + + https://perceptualrobots.github.io/pct/yaw_module.html + 2024-08-20T19:40:02.613Z + + + https://perceptualrobots.github.io/pct/index.html + 2024-08-20T19:40:02.781Z + + + https://perceptualrobots.github.io/pct/errors.html + 2024-08-20T19:40:03.029Z + + + https://perceptualrobots.github.io/pct/putils.html + 2024-08-20T19:40:03.341Z + + + https://perceptualrobots.github.io/pct/environments.html + 2024-08-20T19:40:04.225Z + + + https://perceptualrobots.github.io/pct/plotting.html + 2024-08-20T19:40:03.521Z + + + https://perceptualrobots.github.io/pct/functions.html + 2024-08-20T19:40:04.113Z + + diff --git a/structure.html b/structure.html new file mode 100644 index 00000000..ebcad570 --- /dev/null +++ b/structure.html @@ -0,0 +1,779 @@ + + + + + + + + + + +Structure – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + +
+ + + +
+ +
+
+

Structure

+
+ +
+
+ Classes to create hierachy configurations. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+
+
+
The autoreload extension is already loaded. To reload it, use:
+  %reload_ext autoreload
+
+
+
+
#sys.path.append("..")
+
+
+

source

+
+

LevelKey

+
+
 LevelKey (value, names=None, module=None, qualname=None, type=None,
+           start=1)
+
+

An enumeration.

+
+

source

+
+
+

ArchitectureStructure

+
+
 ArchitectureStructure (references=None, config=None, attr_mut_pb=None,
+                        lower_float=None, upper_float=None,
+                        levels_limit=None, columns_limit=None, sigma=None,
+                        mu=None, alpha=None, modes=None, namespace=None,
+                        **cargs)
+
+

ArchitectureStructure

+
+
arch = ArchitectureStructure()
+
+
+
config = arch.get_config()
+print(arch.get_config())
+target =  {'parameters': { 'modes' : {LevelKey.ZERO:3, LevelKey.N:3,LevelKey.TOP:4,LevelKey.ZEROTOP :4} }}
+assert config == target
+
+
{'parameters': {'modes': {<LevelKey.ZERO: 'level0'>: 3, <LevelKey.N: 'leveln'>: 3, <LevelKey.TOP: 'leveltop'>: 4, <LevelKey.ZEROTOP: 'level0top'>: 4}}}
+
+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/styles.css b/styles.css new file mode 100644 index 00000000..66ccc49e --- /dev/null +++ b/styles.css @@ -0,0 +1,37 @@ +.cell { + margin-bottom: 1rem; +} + +.cell > .sourceCode { + margin-bottom: 0; +} + +.cell-output > pre { + margin-bottom: 0; +} + +.cell-output > pre, .cell-output > .sourceCode > pre, .cell-output-stdout > pre { + margin-left: 0.8rem; + margin-top: 0; + background: none; + border-left: 2px solid lightsalmon; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.cell-output > .sourceCode { + border: none; +} + +.cell-output > .sourceCode { + background: none; + margin-top: 0; +} + +div.description { + padding-left: 2px; + padding-top: 5px; + font-style: italic; + font-size: 135%; + opacity: 70%; +} diff --git a/unittests_run_hierarchies.html b/unittests_run_hierarchies.html new file mode 100644 index 00000000..b6d2425b --- /dev/null +++ b/unittests_run_hierarchies.html @@ -0,0 +1,807 @@ + + + + + + + + + +unittests_run_hierarchies – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

unittests_run_hierarchies

+
+ + + +
+ + + + +
+ + + +
+ + + +
+
import unittest
+from os import sep
+from pct.putils import Timer
+from pct.hierarchy import PCTHierarchy
+from pct.environment_processing import EnvironmentProcessingFactory
+
+
+
class TestRunWindTurbine(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        pass
+
+
+    # def test_runMicrogrid(self):
+
+    #     file = "G:\\My Drive\\data\\ga\\MicroGrid\\RewardError-RootMeanSquareError-Mode04\\ga-000.017-s001-3x5-m004-MG0001-9b7851aa082d1178ee05750f4b5815ce.properties"
+    #     timer = Timer()
+    #     timer.start()
+    #     _, score = PCTHierarchy.run_from_file(file, env_props=None, seed=1, render=False, move=None, min=True, history=False, 
+    #                                                 hpct_verbose= False, runs=None, plots_dir=None, early_termination=False)
+    #     print(f'Score={score:0.3f}')
+    #     timer.stop()
+    #     print(f'Mean time: {timer.mean()}')
+
+
+    def test_run_s_0538_03(self):
+
+        file = "testfiles" + sep + "ga--1362.401-s003-4x3-m005-WT0538-bddf277b0f729cc630efacf91b9f494f.properties"
+        timer = Timer()
+        timer.start()
+        _, score = PCTHierarchy.run_from_file(file, env_props=None, seed=1, render=False, move=None, min=True, history=False, 
+                                                    hpct_verbose= False, runs=None, plots_dir=None, early_termination=False)
+        print(f'Score={score:0.3f}')
+        timer.stop()
+        print(f'Mean time: {timer.mean()}')
+
+        self.assertAlmostEqual(score, -1362.401471117955 )
+
+    def test_run_v_0416_01(self):
+
+        file = "testfiles" + sep + "ga--2629.009-s001-5x5-m002-WT0416-31ecb19201d49e8c6f9dd1e172bd6944.properties"
+        timer = Timer()
+        timer.start()
+        _, score = PCTHierarchy.run_from_file(file, env_props=None, seed=1, render=False, move=None, min=True, history=False, 
+                                                    hpct_verbose= False, runs=None, plots_dir=None, early_termination=False)
+        print(f'Score={score:0.3f}')
+        timer.stop()
+        print(f'Mean time: {timer.mean()}')
+
+        self.assertAlmostEqual(score, -2629.008509888531 )
+
+
+
res = unittest.main(argv=[''], verbosity=3, exit=False)
+
+
test_run_s_0538_03 (__main__.TestRunWindTurbine) ... c:\Users\ruper\AppData\Local\Programs\Python\Python39\lib\site-packages\gym\spaces\box.py:127: UserWarning:
+
+WARN: Box bound precision lowered by casting to float32
+
+ok
+test_run_v_0416_01 (__main__.TestRunWindTurbine) ... 
+
+
+
Score=-1362.401
+Mean time: 0.8087029999999995
+
+
+
c:\Users\ruper\AppData\Local\Programs\Python\Python39\lib\site-packages\gym\spaces\box.py:127: UserWarning:
+
+WARN: Box bound precision lowered by casting to float32
+
+ok
+
+----------------------------------------------------------------------
+Ran 2 tests in 1.691s
+
+OK
+
+
+
Score=-2629.009
+Mean time: 0.8790523999999991
+
+
+
+
assert len(res.result.failures) == 0
+assert len(res.result.errors) == 0
+
+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/webots.html b/webots.html new file mode 100644 index 00000000..e2086bc3 --- /dev/null +++ b/webots.html @@ -0,0 +1,708 @@ + + + + + + + + + + +Webots – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Webots

+
+ +
+
+ A helper class for the Webots environment. +
+
+ + +
+ + + + +
+ + + +
+ + + +
+

source

+
+

WebotsHelper

+
+
 WebotsHelper (name=None, mode=1)
+
+

Initialize self. See help(type(self)) for accurate signature.

+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/yaw_module.html b/yaw_module.html new file mode 100644 index 00000000..510e3465 --- /dev/null +++ b/yaw_module.html @@ -0,0 +1,899 @@ + + + + + + + + + +Yaw Module – pct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Yaw Module

+
+ + + +
+ + + + +
+ + + +
+ + + +
+

source

+
+

get_yaw_count

+
+
 get_yaw_count (nacelle_position_diff)
+
+ +++++ + + + + + + + + + + + + + + + + + + + +
TypeDetails
nacelle_position_diffPandas series of nacelle position increment
Returnsnumber of yaw actuations
+
+

source

+
+
+

get_time_yawing

+
+
 get_time_yawing (nacelle_position_diff)
+
+ +++++ + + + + + + + + + + + + + + + + + + + +
TypeDetails
nacelle_position_diffPandas series of nacelle position increment
Returnstime spent yawing in percent
+
+

source

+
+
+

oriented_angle

+
+
 oriented_angle (angle)
+
+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
angle
Returnsoriented angle in range [-180,179]
+
+

source

+
+
+

get_dataset_from_simu

+
+
 get_dataset_from_simu (path='dataset.csv', cycle_period=10,
+                        rolling_average_duration=20)
+
+

returns output dataset obtained of CYCA-S

+
+

source

+
+
+

get_properties

+
+
 get_properties (properties)
+
+
+

source

+
+
+

get_indexes

+
+
 get_indexes (model_params, properties)
+
+
+

source

+
+
+

test_trad_control

+
+
 test_trad_control (wind_timeseries, wind_timeseries_not_agg, agg, start,
+                    end, experiment=None, datatype='baseline_simu',
+                    outdir=None)
+
+

test CYCA-S and CYCA-L

+
+

source

+
+
+

YawEnv

+
+
 YawEnv ()
+
+

*The main OpenAI Gym class.

+

It encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can be partially or fully observed.

+

The main API methods that users of this class need to know are:

+
    +
  • :meth:step - Takes a step in the environment using an action returning the next observation, reward, if the environment terminated and observation information.
  • +
  • :meth:reset - Resets the environment to an initial state, returning the initial observation and observation information.
  • +
  • :meth:render - Renders the environment observation with modes depending on the output
  • +
  • :meth:close - Closes the environment, important for rendering where pygame is imported
  • +
+

And set the following attributes:

+
    +
  • :attr:action_space - The Space object corresponding to valid actions
  • +
  • :attr:observation_space - The Space object corresponding to valid observations
  • +
  • :attr:reward_range - A tuple corresponding to the minimum and maximum possible rewards
  • +
  • :attr:spec - An environment spec that contains the information used to initialise the environment from gym.make
  • +
  • :attr:metadata - The metadata of the environment, i.e. render modes
  • +
  • :attr:np_random - The random number generator for the environment
  • +
+

Note: a default reward range set to :math:(-\infty,+\infty) already exists. Set it if you want a narrower range.*

+
+

source

+
+
+

get_comparaison_metrics

+
+
 get_comparaison_metrics (wind_direction, power_control, power_simu,
+                          res_model, res_baseline_simu, yaw_rate,
+                          yaw_power, width_bin)
+
+
+

source

+
+
+

test_model_wind

+
+
 test_model_wind (wind_timeseries, start_index, stop_index, ancestors,
+                  filter_duration, yaw_parameters, experiment=None,
+                  datatype='test')
+
+

test RLYCA

+
+

source

+
+
+

test_hpct_wind

+
+
 test_hpct_wind (file=None, plots=None, history=None, verbose=None,
+                 outdir=None, early=None, environment_properties=None,
+                 start_index=None, stop_index=None, experiment=None,
+                 datatype='test', draw_file=None, model_file=None,
+                 log_testing_to_experiment=False,
+                 log_experiment_figure=False, min=None)
+
+

test RLYCA

+ + +
+ +
+ +
+ + + + + \ No newline at end of file
+ + +
+ + +